1

我想将 onMouseOver 和 onMouseOut 事件添加到 TinyMCE 中的编辑器实例(通过插件),但 TinyMCE 的 API 似乎不支持它们。具体来说,我希望当元素被鼠标悬停以切换“只读”模式(可能还有其他东西)时出现一个控件。我是否必须自己将代码添加到 TinyMCE 才能做到这一点,还是通过一些不明显的途径支持它?如果我必须添加代码,是否有一些禁止支持这些事件,这些事件构成了他们不将其包含在 API 中的推理基础?

为了澄清那些与下面的响应者有同样困惑的人的利益,我特别希望将一个事件附加到由 TinyMCE 库创建的 TinyMCE.Editor 实例(例如,传递给使用的回调的类在 TinyMCE.init 的设置参数中)。我希望执行以下操作

tinyMCE.init({
  .
  .
  .
  setup : function(ed) { 
    TinyMCEReadOnlySetup(ed,true); 
    ed.onMouseOver.add(ShowButton(ed));
    ed.onMouseOut.add(HideButton(ed));
  },
  .
  .
  .
});

,但 ed(TinyMCE.Editor 的一个实例)不支持 MouseOver.add 以类似事件的方式。

4

2 回答 2

0

要在只读模式和编辑模式之间切换,您可以使用

ed.getDoc().designMode = "Off";

在您自己的插件中。或者,您可以保存编辑器内容并在触发 onChange 时恢复它。

编辑:

要设置鼠标悬停事件侦听器,您可以使用

$('#' + ed.id +'_parent').bind('mouseover',function (evt){
   setTimeout("console.log('mouseover')",50);return false;
});

您可以在插件的 onInit 部分执行此操作。

于 2010-11-23T14:34:04.797 回答
0

好吧,我可以通过创建一个插件来实现它,然后在 init 属性中添加以下非常hack-y的代码:

ed.onInit.add(function(ed){
                   .
                   .
                   .

    document.getElementById(ed.id + '_parent').setAttribute('onmouseover',
      "tinyMCE.editor_ShowButton('" + ed.id + "');");
    document.getElementById(ed.id + '_parent').setAttribute('onmouseout',
      "tinyMCE.editor_HideButton('" + ed.id + "');");
    //ed.getBody().appendChild(newdiv);
 });

这不是一个最佳解决方案,但它可以完成工作。

于 2010-11-23T19:58:01.113 回答