尝试在jQuery版本的TinyMCE编辑器中找到禁用单个键盘快捷键的位置。目前,允许的快捷方式列表是:
目前正在寻找禁用所有快捷方式,但撤消,重做和加粗。其余的在我们的实现中是不合理的,因为它是不需要的格式化。
我似乎无法找到启用这些快捷方式的代码。你能指出在哪里找到这个代码。
答案 0 :(得分:8)
即使这有一个公认的答案,我也会与tinymce4分享我的用法。您只需将editor.addShortcut('ctrl+u', "", "")
添加到init
方法中的setup
事件方法,该方法将覆盖添加的快捷方式
示例:强> 的
tinyMCE.init({
// Your options here
setup: function(editor) {
editor.on("init", function(){
editor.addShortcut("ctrl+u", "", "");
});
}
})
您可以使用上述代码中的ctrl+u
替换您要禁用的任何快捷方式。
答案 1 :(得分:4)
禁用在Firefox中测试
这应该有助于您入门。您可能需要为ctrl+u
和ctrl+i
添加空快捷方式以在其他浏览器中禁用它,但此代码已经过测试以禁用Firefox中的操作。刚刚运行tinyMCE初始化后运行(我在Firebug中测试过我的):
for(var i in tinyMCE.editors){
var editor = tinyMCE.editors[i];
for(var s in editor.shortcuts){
var shortcut = editor.shortcuts[s];
// Remove all shortcuts except Bold (66), Redo (89), Undo (90)
if(!(s == "ctrl,,,66" || s == "ctrl,,,89" || s == "ctrl,,,90")){
// This completely removes the shortcuts
delete editor.shortcuts[s];
// You could use this instead, which just disables it, but still keeps
// browser functionality (like CMD+U = show source in FF Mac) from interrupting the flow
// shortcut.func = function(){ };
}
}
}
<强>背景强>
它似乎是在2294
的{{1}}行附近定义的(来自完整开发下载)。
此外,它们存储在jscripts/tiny_mce/classes/Editor.js
变量的数组中。它们的键设置有特殊字符,然后是键码,如下所示:Editor.shortcuts
。
但据我所知,许多浏览器似乎都实现了自己的ctrl,,,90
,ctrl+b
和ctrl+i
版本,并且只有Gecko浏览器才会这样做:
ctrl+u
但如果你环顾四周,你可以看到他们是如何启用它的。
此外,请查看Editor.addShortcut
方法。您可以覆盖默认行为。
答案 2 :(得分:3)
好的,所以我能够让它发挥作用。我能够使用上面的Doug代码来阻止firefox以使IE禁用密钥我希望在Doug的代码块之后我必须添加这个代码。
var $iframe = $('iframe').contents().get(0);
$($iframe).keydown(function(oEvent) {
//italics (ctrl+i & Cmd+i [Safari doesn't allow you to test for Cmd])
if (oEvent.keyCode == '73' && (oEvent.metaKey || oEvent.ctrlKey)){
oEvent.preventDefault();
return false;
}
//underline (ctrl+u & cmd+u [Safari doesn't allow you to test for cmd])
if (oEvent.keyCode == '85' && (oEvent.metaKey || oEvent.ctrlKey)){
oEvent.preventDefault();
return false;
}
});
所以基本上TinyMCE会动态地将编辑器作为iFrame加载,所以我从iFrame中禁用了 Ctrl + u 和 Ctrl + i 。我是什么,直到iFrame完成加载,然后附加一个keydown事件和嗅探 Ctrl + i 和 Ctrl + i (我也嗅 Cmd + i 对于mac来说,kbd>和 Cmd + u [虽然Safari不允许你根据这个link测试cmd。其他所有其他东西都被禁用,我需要禁用。
答案 3 :(得分:3)
在IE和FF中允许I B和U来回切换的示例代码。
var ctrlKey = false;
function removeShortcuts(){
var e = tinyMCE.activeEditor;
for (var s in e.shortcuts){
if(s=="ctrl,,,73" || s=="ctrl,,,85" || s="ctrl,,,66"){
e.shortcuts[s].func = function(){};
}
}
e.onKeyUp.add(onKeyUp);
e.onKeyDown.add(onKeyDown);
}
function resetShortcuts(){
var e = tinyMCE.activeEditor;
if (isGecko) {
e.addShortcut('ctrl+b', t.getLang('bold_desc'), 'Bold');
e.addShortcut('ctrl+i', t.getLang('italic_desc'), 'Italic');
e.addShortcut('ctrl+u', t.getLang('underline_desc'), 'Underline');
}
e.onKeyUp.remove(onKeyUp);
e.onKeyDown.remove(onKeyDown);
}
function onKeyUp(editor, event){
if(event.keyCode == 17){
ctrlKey = false;
}
}
function onKeyDown(editor, event){
if(event.keyCode == 17){
ctrlKey = true;
}
if(ctrlKey && (event.keyCode == 73 || event.keyCode == 85 || event.keyCode == 66){
tinymce.dom.Event.cancel(event);
}
}
答案 4 :(得分:0)
对于TinyMCE v4:List of keyboard shortcuts available within the editor body
tinyMCE.init({
setup: function(editor) {
editor.on("init", function(){
editor.shortcuts.remove('meta+u', '', ''); // "meta" maps to Command on Mac and Ctrl on PC
});
}
})