javascript – 覆盖Tinymce中的快捷方式分配
作者:互联网
我在一个显示html文档的应用程序中使用Tinymce,并允许用户对其进行注释.
我已经创建了许多插件并附加了我自己的快捷方式.我还通过在tinymce javascript中注释分配并创建自己的分配,为Bold,Italic和Underline创建了自己的处理程序.
但是,我似乎无法使用一些快捷方式.
我正在使用addShortcut调用.例如,无论我如何覆盖它,CTRL-O都会打开一个标准的文件打开窗口.我可以指定CTRL-SHIFT-O并且工作正常.
我还希望能够覆盖浏览器使用的快捷方式的默认行为,如CTRL-R进行刷新.我们的主要用户非常喜欢使用键盘快捷键,并担心他会不小心碰到CTRL-R,这可能会刷新页面并丢失未保存的工作.
有没有办法在它到达浏览器之前覆盖或拦截CTRL-R?
在此先感谢您的任何帮助.
解决方法:
我实际上找到了一种方法来解决这个问题,从StackOverflow上的另一个帖子,我可以完全控制所有击键,让我轻松捕获我想要的任何快捷方式.这成功地覆盖了用于刷新的CTRL-R和用于Open的CTRL-O.
我为示例代码制作了一些mod,但非常感谢hims056的解决方案.他的回复以及其他一些有用的examaples可以在以下网址找到:
Overriding Browser’s Keyboard Shortcuts
以下是我的代码版本:
tinymce.init({
selector: "textarea#elm1",
theme: "modern",
statusbar: false,
width: "100%",
height: "95%",
plugins: ["print preview"],
content_css: "css/content.css",
...
setup: function(ed)
{
ed.on("keyup", function(e) {
console.debug('Key up event: ' + e.keyCode);
overrideKeyboardEvent(e);
});
ed.on("keydown", function( e) {
console.debug('Key down event: ' + e.keyCode);
overrideKeyboardEvent(e);
});
<script type="text/javascript">
document.onkeydown = overrideKeyboardEvent;
document.onkeyup = overrideKeyboardEvent;
var keyIsDown = {};
function overrideKeyboardEvent(e){
var returnVal = true;
switch(e.type){
case "keydown":
if(!keyIsDown[e.keyCode]){
keyIsDown[e.keyCode] = true;
// check if they selected ctrl-r which will refresh the screen
if (keyIsDown[17])
{
switch (e.keyCode)
{
case 82: // CTRL-R refreshes the screen! Don't want to do that!
e.stopPropagation();
e.preventDefault();
returnVal = false; // false means don't propagate
break;
case 79: // CTRL-O by default opens an open File Dialog.
e.stopPropagation();
e.preventDefault();
returnVal = false; // false means don't propagate
// call openDocument
loadDocument(false);
break;
case 68: // CTRL-D by default opens up the Bookmark Editor in Chrome. We want to start a comment!
e.stopPropagation();
e.preventDefault();
returnVal = false; // false means don't propagate
createComment();
break;
}
}
}
break;
case "keyup":
delete(keyIsDown[e.keyCode]);
// do key up stuff here
break;
}
return returnVal;
}
打开其他建议,改进,评论等.
问候,
抢
标签:tinymce-4,javascript,keyboard-shortcuts,tinymce 来源: https://codeday.me/bug/20191008/1873426.html