Właśnie się dowiedziałem, że window.opener
nie jest dostępny w oknie otwartym przez window.open
, jeśli nowy adres URL jest między domenami, w IE. How do I detect window opener in IEJak obejść okno window.open zabezpieczeń międzydomenowych
Stanie się tak, jeśli okno zaczyna się w mojej domenie, zostawia je, a następnie wraca do mojej domeny. Próbuję utworzyć rejestrację społecznościową (facebook, google, itp.) W wyskakującym okienku. Po zakończeniu należy zamknąć nowe okno i przekierować otwieracz.
Wiem, że Soundcloud to ciągnie, ale nie mam pojęcia jak. Widzę zmianę adresu URL z ich na Facebooku, a następnie zamykam.
Po przekierowanie z powrotem do mojej strony z 3rd party biegnę to:
var data = {
type : 'complete',
destination : '<?= $destination; ?>'
};
if (window.opener) {
window.opener.postMessage(JSON.stringify(data), '*');
window.close();
}
else {
alert("Unable to find window");
}
To alarmuje w IE, mimo że okno było pierwotnie moja domena, która następnie przekierowany na FB, następnie przekierowany z powrotem do mnie . Myślałem, że od kiedy mogę otworzyć moją stronę i przekierować natychmiast z PHP, może to być problem. Jednak nawet po otwarciu mojej strony, wciąż się skarżyłem po powrocie.
UWAGA
rejestracje społeczne nie pracuję dla Google, FB itp ramach iframe
. Uważam, że nie pozwalają im z powodów bezpieczeństwa.
Podoba mi się ten pomysł. Zrobię to, gdy wrócę do biura. –
@Noseratio: Twoje rozwiązanie działa doskonale, jeśli w oknie jest otwarty inny adres URL domeny, ale w jaki sposób możemy zmodyfikować Twój kod, aby poradzić sobie z sytuacją, w której Facebook wewnętrznie uwierzytelnia użytkownika i po prostu otwiera przekierowany adres URL w oknie. W takim przypadku flaga LeftDomain jest fałszywa, mimo że nastąpiło wewnętrzne przekierowanie. –
@dark_shadow, proponuję zadać to jako osobne pytanie i powiązać to z nim. – Noseratio