将OnMouseover事件添加到TinyMCE编辑器实例

时间:2010-11-23 13:56:50

标签: javascript tinymce onmouseover onmouseout

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

为了澄清与下面的响应者具有相同混淆的人的利益,我特别希望将事件附加到由TinyMCE库创建的TinyMCE.Editor实例(例如,该类传递给TinyMCE.init的setup参数中使用的回调。我想做以下

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

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

2 个答案:

答案 0 :(得分:0)

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

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

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

修改

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

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

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

答案 1 :(得分: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);
 });

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