Я будую додаток, що включає аутентифікаціючерез сторонні сторони. Щоб процес не переспрямовував фактичну програму, я відкриваю нове вікно, яке потім робить аутентифікацію та після успіху повертається в головне вікно.
Однак це не відповідає тому, як було заплановано. Коли спливаюче вікно переспрямовується на сторонні і назад, window.opener
отримує null
. Можна ще закрити спливаюче вікно window.close()
але мені також потрібно оновити зону входу в головне вікно, як це:
window.opener.check_auth_status();
Я дуже сподіваюся, що існує спосіб виправити це, напр. прив’язування функції до спливаючого вікна у головному вікні? Оновлення всієї сторінки було б вкрай непотрібним.
Один із способів - це встановити інтервал до головного вікна перевірити, чи спливаюче вікно закрите, але це здається настільки вигадливим.
Відповіді:
9 для відповіді № 1У вас є кілька варіантів, які можуть працювати або не працювати в останніх версіях браузерів через оновлення безпеки
1) перевірте, чи закрито вікно від відкривача - не хитро, а насправді найбезпечніше
2) дайте назву відкривачу
window.name="myMainWindow";
а у спливаючому вікні (скрипт із домену SAME) - зазвичай не слід відкривати нове вікно чи змінювати вміст
var handle = window.open("","myMainWindow");
handle.check_auth_status();
3) використовуйте iFrame у спливаючому вікні, і коли ви хочете отримати доступ до відкривача, використовуйте top.opener