2010-11-23 47 views
1

我想将onMouseOver和onMouseOut事件添加到TinyMCE内的编辑器实例(通过插件),但它们似乎不被TinyMCE的API支持。具体来说,我希望控件在元素被隐藏时切换到“只读”模式(以及其他可能的事情)。我需要自己添加代码到TinyMCE来做到这一点,还是通过一些非显而易见的路线来支持它?如果我必须添加代码,是否有一些禁止支持这些事件的行为,这些行为构成了将它们包含在API中的理由的基础?将OnMouseover事件添加到TinyMCE编辑器实例

为了澄清与下面的响应者相同混淆的人的好处,我特别希望将事件附加到由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在类似事件的时尚。

+0

“添加到tinymce实例”是什么意思,你希望它被添加到一个实例或HTML元素? – Thariama 2010-11-23 14:25:18

+0

我的意思是由TinyMCE创建的编辑器实例,它被激活的元素以及为其创建的JavaScript TinyMCE.Editor对象实例(http://wiki.moxiecode.com/index.php/TinyMCE:API/ tinymce.Editor) – 2010-11-23 15:00:14

回答

0

好吧,我能得到这个通过创建一个插件,然后在init属性添加以下非常破解-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); 
}); 

这不是一个最佳的解决方案,但它得到的任务完成。

0

为只读和编辑模式之间进行切换,你可以在自己的插件使用

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

。或者,您可以保存编辑器内容并在触发onChange时将其恢复。

编辑:

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

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

你可以在你的插件的OnInit的部分做到这一点。

相关问题