我有两个窗口,其中一个是从另一个窗口打开的,因此,在“子”窗口中我有一个 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
问题如下:
- 这是否是符合标准的行为?
- 是否有一些解决此问题的方法?