[英]Window.opener undefined in IE8?
我无法弄清楚我在哪里出错。 在其他浏览器中,它工作正常:
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
为什么这不起作用?
出于安全原因,window.opener并不总是在IE8中工作。 我认为您可以将站点放在“受信任区域”中,以便它允许window.opener工作。
如果两个窗口位于不同的域中,则由于相同的源策略,它将无法在任何浏览器中工作。
请测试一下什么是NULL?
this.opener
or
this.opener.CKEDITOR
当我的安全区域是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));}"
此时,一切都适合我,我会要求您上传您的代码。
我通过简单的搜索找到了这个: http : //social.msdn.microsoft.com/Forums/en-US/iewebdevelopment/thread/0c014e78-8d35-4df3-93da-7f6a30b4ed8b/
提供的解决方案是:
在Internet选项的“安全”选项卡下,单击“可信网站”图标。 现在选中标记为“启用保护模式”的复选框,然后重新启动Internet Explorer。
从可信站点列表中删除该站点...它可能已经映射到与opener(intranet)相同的安全区域。 在IE中选择“文件”>“属性”对话框,以确定页面/域映射到的安全区域。
鉴于到目前为止您可能已经尝试了几个建议,您可能已经更改了足够的设置以处于奇怪的配置状态。 我建议您将所有区域设置重置为默认设置并从头开始。
我遇到了问题window.opener在运行于http:/ localhost:8080的Web应用程序中获取null。如果我放置了IP地址/主机名而不是localhost,则不会发生此问题。
让我们检查一下,我坚信这个解决方案很有帮助。
您的“此”上下文可能会发生变化,具体取决于您使用该功能的方式。
更改:
this.opener.CKEDITOR.tools.callFunction(funcNum, arguments[0]);
至:
window.opener.CKEDITOR.tools.callFunction(funcNum, arguments[0]);
这样可以解决吗?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.