【发布时间】:2012-05-08 13:30:13
【问题描述】:
我有两个窗口,一个是从另一个窗口打开的,所以,我在“子”窗口中有一个opener 属性。
父窗口在全局范围内有一些函数,必须以函数作为第一个参数调用(它将用作回调)。
两个页面都是从同一个域打开的,所以我没有任何同源策略限制(我希望如此)...
在子窗口中我有这样的代码
if(window.opener) {
window.opener.myFunction(function() { ... });
}
一切正常,直到我尝试在 IE 中运行它。在此浏览器中,myFunction 收到的参数始终为 Object 类型(使用 typeof 检查)。 myFunction 的代码是这样的:
window.myFunction = function(cb) {
alert('Callback type is ' + (typeof cb));
if(typeof cb == 'function')
cb();
else
alert('Not a function!');
}
现场演示:http://elifantiev.ru/ie-opener-issue/first.html
问题是:
- 这是符合标准的行为吗?
- 是否有解决此问题的方法?
【问题讨论】:
-
请说明您遇到此问题的 IE 版本。
标签: javascript internet-explorer function window.opener