5

我不知道我哪里出了问题。在其他浏览器中,它工作正常:

function main__pageeditor_new_body_SetUrl()
    {
        function getUrlParam(parentObject, paramName)
        {
          var reParam = new RegExp('(?:[\?&]|&)' + paramName + '=([^&]+)', 'i') ;            
          var match = parentObject.location.search.match(reParam) ;

           return (match && match.length > 1) ? match[1] : '' ;
        }

        var funcNum = getUrlParam(this, 'CKEditorFuncNum');

        this.opener.CKEDITOR.tools.callFunction(funcNum, arguments[0]);
}

但是在 IE 中你会得到这个错误:

'this.opener.CKEDITOR' is null or not an object

为什么这行不通?

4

7 回答 7

1

对于任何想知道的人 - 这有很大帮助:

http://docs.cksource.com/CKEditor_3.x/Developers_Guide/File_Browser_(Uploader)/Custom_File_Browser

于 2012-09-24T16:00:07.707 回答
0

出于安全原因,window.opener 并不总是在 IE8 中工作。我认为您可以将站点放在“受信任区域”中,以便它允许 window.opener 工作。

如果这两个窗口位于不同的域中,那么由于相同的源策略,它将无法在任何浏览器中运行。

于 2012-07-04T11:07:32.303 回答
0

请测试一下什么是 NULL ?

this.opener
or
this.opener.CKEDITOR
于 2012-08-16T17:59:49.893 回答
0

当我的安全区域在 IE8 中为“Internet”时,window.opener 可以工作。试过 开窗器

接下来,我想在 CKEDITOR 本身上尝试这个,所以我去了CKEDITOR DEMO

在那里,我使用开发人员工具栏打开了一个弹出窗口“ window.open ”,在弹出窗口中,我执行了以下代码,效果很好。

>>String(this.opener.CKEDITOR.tools.callFunction);

回复

"function(f){var g=e[f];return g&&g.apply(window,Array.prototype.slice.call(arguments,1));}"

此时,当一切都对我有用时,我会要求您上传您的代码。

于 2012-08-16T18:00:56.963 回答
0

我通过简单的搜索找到了这个:http : //social.msdn.microsoft.com/Forums/en-US/iewebdevelopment/thread/0c014e78-8d35-4df3-93da-7f6a30b4ed8b/

那里提供的解决方案是:

在 Internet 选项的“安全”选项卡下,单击“受信任的网站”图标。现在选中标记为“启用保护模式”的复选框并重新启动 Internet Explorer。

我发现的另一个资源建议也从受信任区域中删除该站点:

从受信任的站点列表中删除该站点...它可能已经映射到与开启程序(内部网)相同的安全区域。在 IE 中选择“文件”>“属性”对话框以确定页面/域映射到哪个安全区域。

鉴于到目前为止您可能已经尝试了几个建议,您可能已经更改了足够多的设置以处于奇怪的配置状态。我建议您将所有区域设置重置为默认值并从头开始。

于 2012-08-17T10:03:03.247 回答
0

我在 http://localhost:8080 中运行的 Web 应用程序中遇到了问题 window.opener getting null。如果我放置了 IP 地址/主机名而不是 localhost,那么这个问题就不会发生。

让我们检查一下,我坚信这个解决方案很有帮助。

于 2014-04-09T08:56:16.640 回答
-1

您的“this”上下文可能会发生变化,具体取决于您使用该功能的方式。

改变:

this.opener.CKEDITOR.tools.callFunction(funcNum, arguments[0]);

到:

window.opener.CKEDITOR.tools.callFunction(funcNum, arguments[0]);

这能解决吗?

于 2012-08-16T04:00:13.010 回答