0

我创建了调用外部弹出窗口的插件:

exec : function( editor )
{
    window.open('index.php?mod=xxxx','Name popup','width=900,height=600');
}

那部分效果很好。如何将数据发送回CKeditor?我想用 jquery 在 CKeditor 的开启器实例的当前位置附加一些 HTML。

我已经尝试过了,但它不起作用:

$('a#clickMe').click(function()
{ 
     window.opener.CKeditor.insertHtml('Bla bla bla');
});
4

3 回答 3

2

找到了一种方法:

exec : function( editor )
{
    window.open('index.php?mod=xxxx&CKEditor='+CKEDITOR.currentInstance.name,'Name popup','width=900,height=600');
}

然后将传递的 $_GET['CKEditor'] 插入到元素 'rel' 属性中。

html:

<a id="clickMe" rel="<?=$_GET['CKEditor']?>">click me</a>

jQuery:

 $('a#clickMe').click(function(){
        var editor = $(this).attr("rel");
        window.opener.CKEDITOR.instances[editor].insertHtml('bla bla');
 });
于 2012-06-27T08:06:11.250 回答
0

尝试:

window.opener.CKEDITOR.instances.nameOfYourInstance.insertHtml( 'bla bla' );

但是,我不知道如果没有先聚焦编辑器,它是否会一直有效。您应该使用 CKEditor 的对话框 API。

于 2012-06-26T18:27:19.870 回答
0

一种不使用 GET 变量的方法 - 将全局变量添加到您的 javascript(例如在 config.js 文件中)

var myEditorInstance;

然后在插件中

exec : function( editor )
{
    myEditorInstance=editor;
    window.open('index.php?mod=xxxx','Name popup','width=900,height=600');
}

然后,您可以从弹出窗口中使用

window.opener.myEditorInstance.insertHtml('Bla bla bla');

这也意味着如果页面上有多个编辑器,则弹出窗口与打开窗口的实例相关。

于 2013-09-05T16:10:03.120 回答