我有两个窗口,一个是从另一个窗口打开的,所以我在“子窗口”中有一个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
的问题是:
- 这是一个standarts合规行为?
- 是否有解决此问题的一些解决方法?
请指定遇到此问题的IE版本。 –
IE7 +(IE 7,8,9) – Olegas