Mam dwa okna, jeden jest otwarty od drugiego, więc mam właściwość opener
w oknie "potomnym".Nie można przekazać funkcji z jednego okna do drugiego w IE
Okno nadrzędne ma jakąś funkcję w zasięgu globalnym, która musi być wywołana z funkcją jako pierwszy argument (będzie używana jako wywołanie zwrotne).
Obie strony są otwarte od tej samej domeny, więc nie mam żadnych same ograniczenia zasad pochodzenia (mam taką nadzieję) ...
w oknie dziecko mam kod jak ten
if(window.opener) {
window.opener.myFunction(function() { ... });
}
Wszystko działa dobrze, dopóki nie spróbuję uruchomić go w IE. W tej przeglądarce argument, otrzymany przez myFunction
, jest ZAWSZE typu Object
(sprawdzany z typeof
). Kodeks myFunction
jest coś takiego:
window.myFunction = function(cb) {
alert('Callback type is ' + (typeof cb));
if(typeof cb == 'function')
cb();
else
alert('Not a function!');
}
żywo demo: http://elifantiev.ru/ie-opener-issue/first.html
pytania jest:
- Czy to Standarts zachowanie zgodne?
- jest jakieś obejście tego problemu?
Proszę podać wersje oprogramowania IE, w których występuje ten problem. –
IE7 + (IE 7,8,9) – Olegas