2010-11-23 49 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的部分做到這一點。

相關問題