Master-X
Регистрация
|
Вход
Форум
|
Новости
|
Статьи
Главная
»
Форум
»
Программинг, Скрипты, Софт, Сервисы
»
Тема:
Помогите по JavaScript: окончание загрузки window.opener
Новая тема
Ответить
цитата
18/01/14 в 18:05
alexxxus
Здравствуйте.
Помогите, пожалуйста.
Скрипт работает в child-окне.
Нужно из него вызвать window.opener для родителя и по окончании загрузки
закрыть child-окно.
Вопрос: как определить, что window.opener закончил загрузку?
window.opener.focus();
window.opener.location.href = url;
// далее дождаться окончания загрузки, и
// по завершении window.close();
Спасибо.
цитата
21/01/14 в 14:29
Yacc
Код:
var parent = window.opener;
parent.focus();
parent.location.href = 'https://www.master-x.com';
var i = setInterval(function() {
try {
parent.document;
}
catch (e) {
clearInterval(i);
window.close();
}
}, 100);
цитата
21/01/14 в 16:26
alexxxus
Спасибо, работает, но только если по ссылке загружаются
другие хосты. 'https://www.master-x.com' или 'http://www.google.com' работает, а вот загрузить страничку со своего же хоста и закрыться не получается. Страничка загружается, но window.close() не срабатывает.
цитата
21/01/14 в 18:06
Yacc
Так и было задумано.
Более менее универсально как-то так.
Код:
var url = 'http://google.com',
parent = window.opener,
intervalID = setInterval(function() {
try {
if (parent.document.URL === url) {
die(intervalID);
}
}
catch (e) {
die(intervalID);
}
}, 100),
die = function (intervalID) {
clearInterval(intervalID);
window.close();
};
parent.focus();
parent.location.href = url;
Если же нужно более точно контролировать процесс загрузки, то можно в коде страницы разместить какие-то маркеры и отслеживать их появление в dom. Стоит только помнить что окно закрывается скорее по событию document.DOMContentLoaded, нежели по document.load.
цитата
21/01/14 в 19:05
alexxxus
Спасибо. Я на трех форумах просил помочь, никто не справился)
Решение с отслеживанием маркера при загрузке будет для меня идеальным.
Пожалуйста, покажите как такое делается .
Спасибо!
(рейтинг по максимуму за 2 поста 4+4 добавил)
цитата
22/01/14 в 16:16
Yacc
Предположим что нужно закрывать окно по окончании загрузки фрейма.
test.html
Код:
<iframe src="//www.master-x.com" onload="window.iframeLoaded = true"/>
child.html
Код:
<script>
var parent = window.opener,
intervalID = setInterval(function() {
if (typeof parent.iframeLoaded !== 'undefined' && parent.iframeLoaded === true) {
clearInterval(intervalID);
window.close();
}
}, 100);
parent.focus();
parent.location.href = 'test.html';
</script>
Как-то так. Не зная что конкретно ты делаешь, сложно советовать что-то конкретное.
цитата
22/01/14 в 16:54
alexxxus
Огромное спасибо за труд и за потраченное время.
Без Вас я бы не справился, тем более, что на других форумах (в том числе забугорном) никто так и не помог.
Новая тема
Ответить
Эта страница в полной версии