Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/414.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript IE8中未定义Window.opener?_Javascript_Internet Explorer 8_Ckeditor - Fatal编程技术网

Javascript IE8中未定义Window.opener?

Javascript IE8中未定义Window.opener?,javascript,internet-explorer-8,ckeditor,Javascript,Internet Explorer 8,Ckeditor,我不知道我在这件事上哪里出了问题。在其他浏览器中,它可以正常工作: function main__pageeditor_new_body_SetUrl() { function getUrlParam(parentObject, paramName) { var reParam = new RegExp('(?:[\?&]|&)' + paramName + '=([^&]+)', 'i') ;

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

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”为空或不是对象


为什么这不起作用?

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

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

您的“此”上下文可能会发生更改,具体取决于您如何使用该功能

更改:

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


这能解决问题吗?

请测试一下什么是空的

this.opener
or
this.opener.CKEDITOR

window.opener在IE8中我的安全区域为“Internet”时工作。 试穿

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

在那里,我用开发者工具栏打开了一个弹出窗口“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));}"
在我一切正常的时候,我会要求你上传你的代码。

我发现这是一个:

这里提供的解决方案是:

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

另一个建议也将站点从受信任区域中删除:

从受信任的站点列表中删除该站点。。。它可能已经映射到与开放器(intranet)相同的安全区域。选择IE中的文件>属性对话框,以确定页面/域映射到哪个安全区域


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

对于任何想知道的人来说,这非常有帮助:


我在http:/localhost:8080中运行的Web应用程序中遇到了window.opener变为null的问题。如果我将IP地址/主机名改为localhost,则不会发生此问题


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

您的示例中一定缺少一些javascript。有什么东西将window.opener分配给这个.opener吗?我已经上传了与此错误相关的部分代码。我不能上传完整的网站,因为它是一个私人客户端。我已经尝试过测试安全区域,但没有成功。我假设您正在通过window.open打开的页面上执行此脚本。是这样吗?请您在window.open之前的基本页面上添加此行警报(CKEDITOR.tools.callFunction),并告诉我结果。虽然我同意使用
window
而不是
this
是一个好主意,但我不同意这是一个可能的解决方案。该函数始终以相同的方式使用,并且在所有其他浏览器中都有效。此外,
this.opener
解析为一个对象,只是它没有解析为正确的对象(出于安全原因)。此外,原始海报上的评论非常清楚地表明它没有解决问题。问题中已经提到:
“this.opener.CKEDITOR”为空或不是对象
。这意味着window.opener正在工作,但您无法从window.opener访问CKEDITOR对象。试试这个
"function(f){var g=e[f];return g&&g.apply(window,Array.prototype.slice.call(arguments,1));}"