2013-02-19 2 views
3

페이지에 tinyMCE를 사용하고 있습니다. Ctrl + 을 사용하여 콘텐츠를 저장하면 초점이 tinyMCE에서 벗어 났을 때 모든 것이 잘 작동하지만 초점이 tinyMCE에 있으면 작동하지 않습니다. 초점이 tinyMCE 안에 있더라도 내용을 저장하도록 코드의이 블록에 삽입하는 코드 조각이 필요합니다 (설정 또는 플러그인이 아님).tinyMCE ctrl + 단축키를 비활성화하여 ajax 내용 저장을위한 바로 가기를 활성화하십시오.

<script type="text/javascript"> 
$(document).ready(function() { 
    dssModify = new Sol.Dss.Modify(); 
    dssModify.config = 
     { 
     urlActionContentSave: "<?php echo \Sol\Dss\Dss::me() -> urlActionContentSaveGet() ; ?>", 
     buttonContentSaveId: "<?php echo \Sol\Dss\Dss::me() -> modifyButtonContentSaveIdGet() ; ?>", 
     buttonContentSavingTitle: "<?php echo \Sol\Dss\Dss::me() -> modifyButtonContentSavingTitleGet() ; ?>", 
     buttonContentSaveTitle: "<?php echo \Sol\Dss\Dss::me() -> modifyButtonContentSaveTitleGet() ; ?>", 
     textareaContentId: "<?php echo \Sol\Dss\Dss::me() -> modifyTextareaContentIdGet() ; ?>", 
     formId: "<?php echo \Sol\Dss\Dss::me() -> modifyFormIdGet() ; ?>", 
     idRoutes: "<?php echo $route[ 'id' ] ; ?>" 
    }; 
    whenClicked = function() 
    { 
     $("#"+dssModify.config.textareaContentId).val(tinyMCE.activeEditor.getContent()); 
     dssModify.contentSave(); 
    } 
    $("#<?php echo Sol\Dss\Dss::me() -> modifyButtonContentSaveIdGet() ; ?>").click(whenClicked);//Click Function 
    $(window).keypress(function(event) { 
     if (!(event.which == 115 && event.ctrlKey) && !(event.which == 19)) 
      return true; 
     whenClicked(); 
     event.preventDefault(); 
     return false; 
    }); 

}//Ready function 
); 
</script> 

답변

3

이것은 까다로운 내용입니다. 주 문서에서 이와 같은 함수를 만들어야합니다.

function receiveShortCutEvent(eventObject){ 
    //console.log('receiveShortCutEvent', eventObject); 
    $(document).trigger(eventObject); 
    $(document).trigger({type: 'keydown', ctrlKey: eventObject.ctrlKey, altKey: eventObject.altKey, which: eventObject.keyCode, originalEvent:eventObject }); 
    return false; 
} 

tinymce 측에서 ctrl + h를 입력하면 receiveShortCutEvent를 호출해야합니다. setup configuration paramter을 사용할 수 있습니다.

 ed.onKeyDown.add(function onkeydown(ed, evt) { 
      // Shortcut: ctrl+h 
      if (evt.keyCode == 72 && !evt.altKey && !evt.shiftKey && evt.ctrlKey && !evt.metaKey) { 
       setTimeout(function(){ 
        var e = { type : 'keydown'}; 
        e.charCode = e.keyCode = e.which = 72; 
        e.shiftKey = e.altKey = e.metaKey = false; 
        e.ctrlKey = true; 
        window.parent && window.parent.receiveShortCutEvent && window.parent.receiveShortCutEvent(e); 
       }, 1); 
      } 
}); 

아이디어를 얻길 바랍니다.

+0

나는 이것을 FF 32.0.3에서 시도했다 - 작동하지 않는다! –

+0

그것이 내가 겉보기에 근무하고 4 만 건에 아니에요 – Thariama

+0

(만 tinymce3) tinymce4 사용하여 작동하지 않습니다 것은 : 설정 : 기능 (ED) { 경우 ($ browser.msie.) ed.addShortcut ("ctrl + s", function() {}, function() {}); else ed.addShortcut ("ctrl + s", "", ""); } 기본 페이지 –

관련 문제