#javascript #redirect #window
#javascript #перенаправление #окно
Вопрос:
У меня есть страница, которая открывает дочернее окно от родительского.
После того, как пользователь что-то сделал в дочернем окне, мне нужно, чтобы дочернее окно закрылось, а его родительское окно было перенаправлено на страницу нажатием кнопки в дочернем окне.
Есть идеи?
Ответ №1:
из дочернего:
opener.location.href = '/redirect';
close();
Комментарии:
1. но IE показывает заблокированное всплывающее окно: (Любое решение, работающее и в IE?
2. @Binod — IE, блокирующий всплывающее окно, не имеет никакого отношения к этому вопросу. Пожалуйста, задайте новый вопрос, если у вас возникли проблемы, этому почти 3 года.
3. Проблема заключалась в той же политике происхождения. Если окна разного происхождения, то IE рассматривает это перенаправление как всплывающее окно
Ответ №2:
Ключ в том, чтобы использовать window.opener
для доступа к родительскому окну:
<script>
window.opener.location = '/redirect.html';
window.close();
</script>
Комментарии:
1. вы хотите перевернуть эти строки, подумайте об этом 🙂
2. @cwolves: Это работает в любом случае. Вы все еще можете получить доступ к свойствам объекта window даже после его закрытия.
3. Это не гарантируется. Конечно, это, вероятно, всегда будет работать в этом сценарии, но браузер начнет закрывать окно и в конечном итоге остановит выполнение JS в середине инструкции. Если у вас был долго выполняющийся код после
window.close()
, есть вероятность, что он не завершится. Также есть вероятность, что какой-нибудь браузер сообщит «после этого код не разрешен для запускаwindow.close()
» и просто немедленно отключит его4. @cwolves — Хороший момент, что мы не знаем, что может сделать браузер, поэтому безопаснее просто делать это в логическом порядке. Я перевернул две строки в своем ответе.
5. Единственная причина, по которой я действительно указываю на это, заключается в том, что я столкнулся со сценарием, в котором я запустил много логики
window.onbeforeunload
, и браузер убил его : (
Ответ №3:
попробуйте это:
var parent = window.opener;
parent.location ='some url';
window.close();
вот пример в скрипке: http://jsfiddle.net/maniator/jGbZq /
Ответ №4:
Пожалуйста, попробуйте ниже :
window.opener.location.reload();
close();
- window.opener.location.reload(); перезагрузит родительское окно.
- close() закроет дочернее окно
У меня все работает нормально.