С нами с 01.10.04
Сообщения: 456
Рейтинг: 149
|
Добавлено: 18/01/14 в 18:05 |
Здравствуйте.
Помогите, пожалуйста.
Скрипт работает в child-окне.
Нужно из него вызвать window.opener для родителя и по окончании загрузки
закрыть child-окно.
Вопрос: как определить, что window.opener закончил загрузку?
window.opener.focus();
window.opener.location.href = url;
// далее дождаться окончания загрузки, и
// по завершении window.close();
Спасибо.
|
|
|
|
С нами с 09.03.09
Сообщения: 6053
Рейтинг: 3538
|
Добавлено: 21/01/14 в 14:29 |
Код: | 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); |
|
|
|
|
С нами с 01.10.04
Сообщения: 456
Рейтинг: 149
|
Добавлено: 21/01/14 в 16:26 |
Спасибо, работает, но только если по ссылке загружаются
другие хосты. 'https://www.master-x.com' или 'http://www.google.com' работает, а вот загрузить страничку со своего же хоста и закрыться не получается. Страничка загружается, но window.close() не срабатывает.
|
|
|
|
С нами с 09.03.09
Сообщения: 6053
Рейтинг: 3538
|
Добавлено: 21/01/14 в 18:06 |
Так и было задумано.
Более менее универсально как-то так.
Код: | 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.
|
|
|
|
С нами с 01.10.04
Сообщения: 456
Рейтинг: 149
|
Добавлено: 21/01/14 в 19:05 |
Спасибо. Я на трех форумах просил помочь, никто не справился)
Решение с отслеживанием маркера при загрузке будет для меня идеальным.
Пожалуйста, покажите как такое делается .
Спасибо!
(рейтинг по максимуму за 2 поста 4+4 добавил)
|
|
|
|
С нами с 09.03.09
Сообщения: 6053
Рейтинг: 3538
|
Добавлено: 22/01/14 в 16:16 |
Предположим что нужно закрывать окно по окончании загрузки фрейма.
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> |
Как-то так. Не зная что конкретно ты делаешь, сложно советовать что-то конкретное.
|
|
|
|
С нами с 01.10.04
Сообщения: 456
Рейтинг: 149
|
Добавлено: 22/01/14 в 16:54 |
Огромное спасибо за труд и за потраченное время.
Без Вас я бы не справился, тем более, что на других форумах (в том числе забугорном) никто так и не помог.
|
|
|
|
Текстовая реклама в форме ответа Заголовок и до четырех строчек текста Длина текста до 350 символов Купить рекламу в этом месте! |