将Javascript事件绑定到JOOMLA MCE编辑器

时间:2014-01-06 13:02:42

标签: jquery joomla tinymce joomla-extensions joomla-component

任何专家都可以回复

到目前为止,我对JOOMLA编辑器的了解是

它属于微小的MCE

它使用iframe和令人满意的身体标签。

现在我要做的是将keyup事件附加到iframe的主体。但不成功。我试过的是如下。

myEditorField_ifr是我通过Google检查元素方法计算的iframe的ID,尽管myEditorField是我使用JFORM方法分配的ID。

方法1

     $('#myEditorField_ifr').contents().find('body').on('keyup',function(e) {
        alert('bingo?');
     });
     unsuccessful

以及使用我的另一个iframe的跟随方法也无法使用tinyMCE

方法2

  $('.#myEditorField_ifr').load(function(){
           alert("hello");
           aaa= $('.#myEditorField_ifr').contents().find('body').on('keyup',function(e) {
        alert('bingo?');
     });

  })

通过这种方法甚至不会执行警报。是否有editor->setcontenteditor->getcontent等任何方法将事件附加到TinyMCE ???

还有一个小问题是这种类型的编辑器可以在不使用iframe的情况下实现,但为什么tinyMCE正在使用iframe ???

2 个答案:

答案 0 :(得分:0)

要捕获关键事件,您可能需要创建一个TinyMCE插件,因为我认为编辑器会消耗关键事件。

您可能希望阅读TinyMCE wiki

上的Creating a Plugin

答案 1 :(得分:0)

哇,我刚解决了。

问题是我的脚本在编辑器完全加载之前正在执行。我仍然无法弄清楚为什么.load()不能与MCE一起工作,但.load()在我测试的其他iframe上成功运行。

所以我做的是我发了一个click事件,并且.keyup()通过该函数附加到iframe body。在我的情况下,这种情况是可以容忍和可行的,但可能不适合你的情况。

所以下面是一大块完美运行的代码,并在JOOMLA编辑器中的每个键盘上显示警报。

    $(".myDoButton").on("click",function(){
         aaa= $('.myPreviewEditor iframe').contents().find('body').keyup(function(){
         alert("hoklo");
    });

虽然这只是一个临时解决方案。