【问题标题】:wysihtml5 - how disable underline tagwysihtml5 - 如何禁用下划线标记
【发布时间】:2013-04-23 05:57:33
【问题描述】:

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

【问题讨论】:

标签: javascript html wysiwyg wysihtml5


【解决方案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 键盘快捷键,我需要做的就是从 @987654325 中第 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
  }       
});

【讨论】:

  • 我试图删除 85 快捷方式但它不起作用,所以这就是我创建问题的原因(+ 它忽略了解析器规则)。是的,抓住 keydown 可能是解决方案,我正在考虑类似的事情,所以我稍微编辑了你的代码,现在我很高兴。好吧,非常感谢你,我的 100 分都归功于你 :-)
  • 转储问题.. 当您删除85快捷方式时,您是刚刚重新加载了编辑器页面,还是尝试了强制重新加载以避免JS浏览器缓存?对我来说,它也发生了同样的事情。删除 85 快捷方式是我的第一次尝试。当它在第一个实例中不起作用时,我尝试了键侦听器,后来才意识到脚本被缓存了(尽管我重新加载了几次页面)。无论如何,很高兴你找到了一个可行的解决方案。 Grüße von der Schanze ;)
  • 我总是删除缓存并在不同的浏览器中测试几次,所以删除快捷方式对我来说真的不起作用。是的,我也很高兴它有效!再一次,Danke für Ihre Hilfe!
  • 奇数。在最新的 Chrome (stable & carnary)、FF、Aurora 和 Safari 中再次测试。在所有情况下,删除 85 快捷方式都按预期工作?!
  • wysihtml5 0.3.0 在所有主流浏览器中再次测试,去掉 85 是不够的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-31
  • 1970-01-01
  • 2021-02-14
  • 2021-11-03
  • 2010-10-16
  • 2011-02-12
相关资源
最近更新 更多