Moh*_*ani 5 keyboard shortcuts tinymce
我在页面中使用 tinyMCE。我使用ajax捕获Ctrl+s保存内容,当焦点在tinyMCE之外时,一切正常,但是当焦点在tinyMCE中时,它不起作用。我需要一段代码插入到这个代码块中(而不是在设置或插件中)以使内容保存工作,即使焦点在 tinyMCE 内。
<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>
Run Code Online (Sandbox Code Playgroud)
使用init_instance_callback和定义您的自定义快捷方式。
例子:
tinymce.init({
selector: "textarea",
init_instance_callback: function (editor) {
editor.addShortcut("ctrl+s", "Custom Ctrl+S", "custom_ctrl_s");
editor.addCommand("custom_ctrl_s", function() {
alert("234");
/*
your custom codes
*/
});
}
});
Run Code Online (Sandbox Code Playgroud)
这是一个棘手的问题。您必须在主文档中创建这样的函数。
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;
}
Run Code Online (Sandbox Code Playgroud)
在tinymce方面,如果键入ctrl+h,您将需要调用receiveShortCutEvent。您可以为此使用设置配置参数。
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);
}
});
Run Code Online (Sandbox Code Playgroud)
我希望你能明白。
| 归档时间: |
|
| 查看次数: |
2007 次 |
| 最近记录: |