我有兩個窗口,一個是從另一個窗口打開的,所以我在「子窗口」中有一個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