wysihtml5 - 如何禁用下划线标记

时间:2013-04-18 17:37:41

标签: javascript html5 wysiwyg wysihtml5

我的网站上有一个wysihtml5的小问题。我想只允许几个html标签,如果我从解析器规则中删除下划线甚至从wysihtml5库下划线命令,我仍然可以按CTRL(命令)+ U使选定的文本加下划线。我该怎么做才能摆脱这种行为? 感谢您的任何建议。

1 个答案:

答案 0 :(得分:1)

新答案:这是我更新的解决方案。我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键盘快捷键,我需要做的就是从{{8494行的快捷方式对象中删除“u”(85)的keyCode 1}}。

更改

wysihtml5-0.4.0pre.js

  shortcuts = {
    "66": "bold",     // B
    "73": "italic",   // I
    "85": "underline" // U
  };

您将无法再使用编辑器中的Ctrl + u快捷键。

或者,您可以捕获keydown事件并禁用Ctrl + u快捷键(即阻止默认行为)。类似的东西:

  shortcuts = {
    "66": "bold",     // B
    "73": "italic"    // I
  };