按键的Event.add不起作用?

时间:2012-10-26 18:41:29

标签: tinymce keypress

我们正在尝试将tinyMCE用于我们的某个应用程序。我们想将一些事件处理附加到tinyMCE中的特定元素。我们尝试过使用

Event.add(element, 'keypress', getTag);

其中元素是我们尝试将事件附加到的HTML元素,而 getTag 是我们在触发按键事件时调用的函数。我们尝试附加的特定元素是span元素,其中包含一些文本。我们想捕捉跨度标签之间输入特定组合键(如ctrl-F10)的时间,并弹出带有选项的菜单。

菜单中的选项将根据输入组合的特定范围元素而有所不同。这就是为什么我们要附加到特定元素而不是全局附加到文档中的所有span元素(在tinyMCE内)。即使用闭包,getTag函数的行为会有所不同,具体取决于输入组合的位置。

问题是当我们附加到特定元素并测试它们时,任何“按键”事件都没有发生。如果我们尝试使用“click”事件附加到span元素,则一切都按预期工作。一旦我们恢复使用'keypress',就不会再发生任何事了。

使用调试工具我已经验证了一些事情。事件侦听器附加到元素。似乎tinyMCE创建了一个顶级按键,并在tinyMCE中单击(以及其他)文档。我猜这就是Editor.onKeyPress()。add()之类的函数。当我使用click调试工作scenorio时,我可以看到为document和span元素触发事件的位置。在调试keypress事件时,我只看到为document元素触发的事件,而不是span元素。我认为tinyMCE正在压制这个事件,但我无法弄清楚如何以及需要做些什么来阻止它。

1 个答案:

答案 0 :(得分:0)

在你自己的一个插件中使用这个处理程序或使用tinymce config param setup

ed.onKeyDown.add(function onkeydown(ed, evt) {

   var is_in_span = ed.selection.getNode().nodeName == 'SPAN';   


   // check for caret in SPAN and F10-Key
   if (is_in_span && evt.keyCode == '121'){ // you may add other keyCodes here
      // do whatever you like here
      ...
   }
});