我的网站上的 wysihtml5 有一个小问题。我只想允许几个 html 标签,如果我从解析器规则中删除下划线,甚至从 wysihtml5 库中删除下划线命令,我仍然可以按 CTRL(command)+U 使选定的文本加下划线。我应该怎么做才能摆脱这种行为?
感谢您的任何建议。
最佳答案
新答案: 这是我更新的解决方案。我 updated the existing keydown event handler(和 added a keyup handler 用于跟踪 ctrl 按下状态)如下:
// --------- Shortcut logic ---------
var ctrlDown = 0;
dom.observe(element, "keydown", function(event) {
var keyCode = event ? event.which : window.event.keyCode,
command = shortcuts[keyCode];
if (1 == event.ctrlKey) {
console.log('Ctrl key pressed. Setting ctrlDown = 1.');
ctrlDown = 1;
}
if (85 == keyCode && 1 == ctrlDown) {
console.log('Pressed "U" (keyCode 85), but Ctrl key still down. Don\'t fire!');
return event.preventDefault(), !1;
}
if (1 == ctrlDown && !event.altKey && command) {
console.log('Shortcut Ctrl + keyCode ' + keyCode + ' triggered.');
that.commands.exec(command), event.preventDefault();
}
});
dom.observe(element, "keyup", function(event) {
// note: "event.ctrlKey" doesn't work with keyup, use keyCode/which
if (17 == (event ? event.which : window.event.keyCode)) {
console.log('Ctrl key released. Setting ctrlDown = 0.');
ctrlDown = 0;
}
});
我发给你 a pull request at github 。
原始答案: 要禁用 Ctrl+u 键盘快捷键,我需要做的就是从
wysihtml5-0.4.0pre.js
中第 8494 行的快捷方式对象中删除“u”(85)的 keyCode。改变
shortcuts = {
"66": "bold", // B
"73": "italic", // I
"85": "underline" // U
};
至
shortcuts = {
"66": "bold", // B
"73": "italic" // I
};
并且您将无法再在编辑器中使用 Ctrl+u 快捷键。
或者,您可以捕获 keydown 事件并禁用 Ctrl+u 快捷方式(即防止默认行为)。就像是:
// --------- disable ctrl+u shortcut for underlining texts ---------
dom.observe(element, "keydown", function(event) {
if ((event.ctrlKey || event.metaKey) && 'u' == String.fromCharCode(event.which).toLowerCase()) {
// do something
}
});
关于javascript - wysihtml5 - 如何禁用下划线标签,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16089654/