Window.opener在IE8中未定义?

时间:2012-07-04 10:58:27

标签: javascript internet-explorer-8 ckeditor

我无法弄清楚我在哪里出错了。在其他浏览器中,它可以正常工作:

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

为什么这不起作用?

6 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

出于安全原因,

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

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

答案 2 :(得分:0)

请一次测试什么是NULL ??

this.opener
or
this.opener.CKEDITOR

答案 3 :(得分:0)

当我的安全区域在IE8中是“Internet”时,

window.opener正常工作。 试穿 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));}"

此时一切都适合我,我会要求您上传您的代码。

答案 4 :(得分:0)

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

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

答案 5 :(得分:-1)

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

改变:

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

为:

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

这样可以解决吗?