替代Tinymce中的快捷方式指定
Overriding shortcut assignments in Tinymce
我在一个显示html文档并允许用户对其进行注释的应用程序中使用Tinymce
我已经创建了许多插件,并在其上附加了我自己的快捷方式。我还创建了自己的粗体、斜体和下划线处理程序,通过注释掉tinymce javascript中的赋值并创建自己的处理程序。
然而,有一些快捷方式我似乎无法使用。
我正在使用addShortcut调用。例如,无论我如何覆盖,CTRL-O都会打开一个标准的文件打开窗口。我可以指定CTRL-SHIFT-O,这很好。
我还希望能够覆盖浏览器用于刷新的快捷方式(如CTRL-R(的默认行为。我们的主要用户非常喜欢使用键盘快捷键,担心他会不小心点击CTRL-R,这可能会刷新页面并丢失未保存的工作。
有没有办法在CTRL-R到达浏览器之前覆盖或拦截它?
提前感谢您的帮助。
实际上,我在StackOverflow上的另一篇文章中找到了解决这个问题的方法,它让我可以完全控制所有按键,并让我可以轻松地捕获任何想要的快捷方式。这成功地覆盖了用于刷新的CTRL-R和用于打开的CTRL-O。我对示例代码做了一些修改,但非常感谢他56的解决方案。他的回答以及其他一些有用的考试可以在以下网站上找到:
覆盖浏览器';s键盘快捷键
下面是我的代码版本:
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;
}
接受其他建议、改进、评论等。
问候,
Rob
相关文章:
- javascript中的快捷方式融合优化
- 用于导出导入的快捷方式
- 如何制作链接到网页特定元素的桌面快捷方式
- 如何启用Emmet'的选项卡键处理程序(HTML快捷方式)
- 使用全局快捷方式(如 Spotlight/Launchy)将电子应用程序带到前台
- 有没有一种快捷方式可以让我用javascript或jQuery设置对象的字段
- 用我自己的自定义快捷方式覆盖浏览器快捷方式
- 创建一个键盘快捷方式来启动Google Chrome扩展
- 触发器快捷方式”;STRG+Plus按钮”;使用Javascript
- 动态网页的快捷方式
- 下划线/洛达什号中的快捷方式,用于(递归)设置对象的所有属性
- 将键盘快捷方式关联到鼠标事件的方法
- 替代Tinymce中的快捷方式指定
- Javascript快捷方式,将字符串附加到数组的所有值中
- 在 Mac 上的 Firebug 中继续执行脚本的快捷方式是什么?
- TinyMCE v4.3.6 - 快捷方式
- 通过 JavaScript URL 可变快捷方式扩展 HTML URL
- 用于发送 ajax/JSON 请求的 JQuery 快捷方式
- 如何通过快捷方式增加和减少字体大小?(tinymce)
- 如何在tinyMCE中添加项目符号和数字列表键盘快捷方式