Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > анализ открытого окна


Автор: wildrabbit 18.10.2006, 16:02
Вопрос в следующем:

есть код:
Код

mywin=window.open("http://www.list.ru");
mywin.onload=alert("загрузилось");


открывается новое окно, в нем грузится сайт. надо анализировать загрузилось что-то или нет. делаю так,
но алерт всегда всплывает, а надо чтобы только после того как что-то загрузилось.

как понять, что в новом окне у нас сайт загрузился? Ваще хочу чтобы по title следить за состоянием сайта, т.е.
если в title содержится слово error, то сделать какие-нибудь действия... вот так.

Автор: griker 18.10.2006, 16:25
Поставь на открываемую страницу в body
Код

onload="alert('Message');"

Автор: GIK 18.10.2006, 16:27
Цитата(wildrabbit)

 а надо чтобы только после того как что-то загрузилось.

Это команда на вывод alerta при загрузке.  http://forum.vingrad.ru/index.php?showtopic=102260&unread=1&hl=%D0%97%D0%B0%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%B0,and,%D0%BE%D0%BA%D0%BD%D0%B0

Автор: wildrabbit 19.10.2006, 17:00
наверное я плохо выразил свою мысль.

Моя задача состоит в том чтобы
1) открыть новое окно с указанным адресом (адрес выбирается из списка)
2) ждать пока сайт загрузится
3) если в title открытого окна появилось слово error, то закрыть окно и перейти к следующему по списку
4) если сайт загрузился полностью и нет слова еррор, то не закрывать это окно

Автор: vasac 19.10.2006, 18:19
wildrabbit, адреса пренадлежат тому же домену, что и изначальная страница? Если нет, то ты не можешь иметь к ним доступ.

Если твоему, то так:
Код

mywin.onload = ( function() {alert( "Загрузилось" ); } );

алерт выскочит в родительском окне.

mywin.alert( "Загрузилось" ); — так в дочернем

Автор: wildrabbit 20.10.2006, 14:51
в том то и дело, что адреса разные, но заранее определенные.

Цитата

mywin.onload = ( function() {alert( "Загрузилось" ); } );


так ваще не работает ничего. и имхо и не должно работать.

дело в том, что когда я делаю так как в моем первом примере, то не дождавшись загрузки list.ru сразу же вылетает alert.
а мне надо чтобы дождаться когда загрузится, проанализировать что написано в тайтле нового окна, и потом сказать, что
"все мол загрузилось" или наоборот "нихрена не грузится. иди, звони, проверяй у хостера в чем дело".
вот такая задача.

задача вобщем тривиальная, но что-то никто не может ее решить, а никого из гуру такие задачи не интересуют.
мелкая цель наверное smile

Автор: AKS 20.10.2006, 15:19
wildrabbit,  У Вас в IE наверно не работает такое:
Код

mywin.onload =  function() {alert( "Загрузилось" ); }
 
Это должно работать в DOM-браузерах. А для IE напишите отдельную веточку:
Код

if(window.execScript) 
  mywin.execScript('window.onload = function() {alert( "Загрузилось" ); }', 'JScript');

Автор: wildrabbit 20.10.2006, 15:31
хм. странно.
нет, у меня не ИЕ, у меня Опера.

Код

mywin.onload =  function() {alert( "Загрузилось" ); }


ваще ничего на дает. т.е. нету алерта, не вылетает он ваще.
а у Вас как это работает? у Вас после того как новое окно открылось, в нем загрузился сайт, только после этого вылетает алерт?
а у Вас какой браузер?

Автор: vasac 20.10.2006, 15:36
wildrabbit, что ж, родной, если тебя не устраивают ответы можешь подождать гуру. Может они таки сблаговалят прийти и написать тоже самое — "нельзя получить доступ к странице другого домена".

У меня на одном домене alert вылетает на новой странице в FF и opera9. В IE, да, действительно это не работает.

А почему в твоем изначальном примере алерт выскакивает до загрузки я думаю ты сможешь понять сам, если немного подумаешь над ним.

Автор: AKS 20.10.2006, 15:41
wildrabbit, 
Вы знаете, я поторопился, как всегда, извиняюсь. Я проверял в IE, Opera'х (8+), Gecko'бразах, но проверил лишь "свои" страницы. С чужими, конечно же, работать не будет - нету к ним доступа, а Вы как-раз для чужих хотели бы...

Автор: wildrabbit 20.10.2006, 16:23
vasac, понял, только сначала подумал, что Вы что-то другое имели ввиду.
AKS, спасибо.

Теперь я понял, что с помощью javascript такое не сотворить. А с помощью пхп или чего-то еще можно?

Автор: Nicholas_S 20.10.2006, 17:06
wildrabbit, есть одно решение, хотя использовать его или нет - смотри сам.

Из родительского окна создаешь новое с помощью window.open, например: var newWin = window.open('myURL', '_blank');
Где myURL - адрес на твою страницу со следующим содержанием:

Код

<frameset cols='*'>
  <frame onload="window.opener.status = 'Page status is loaded'" src="alienURL">
</frameset>


Т.е. по сути страница подменяется на твою, та, в свою очередь, загружает "чужой" URL.
Решение не есть самый гуд (например, надо учесть еще изменение заголовка окна (TITLE) на тот, который имеется у "чужой" страницы),
но с пивом потянет smile
А менять контент "чужых" страниц, как правильно сказал vasac, недопустимо. Сделано это в браузерах из-за соображений безопасности.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)