Не срабатывает window.onload()
Подскажите, что неправильно делаю
Нужно создать новое окно, загрузить в нем документ и потом перейти по ссылке в этом документе... Ясно, что нужно дождаться его полной загрузки, но событие onload у меня никак не хочет возникать... Вот текст скрипта(на примере вашего сайта, должен перейти на форум): var newWind=window.open(); newWind.onload= function () { newWind.location=newWind.document.getElementsByTagName("A")[3]; }; newWind.location="http://javascript.ru/"; Насколько я понимаю, ведь событие onload должно возникать после смены location окна....но оно почему то не срабатывает Скрипт только переходит на javascript.ru и все В чем может быть проблема? |
В JavaScript действует правило одного источника. Нельзя управлять данными с другого домена.
|
то есть я не могу обратиться к созданному окну и найти там что нибудь?...
а как тогда поступить? да и вообще, возможно ли то что я хочу на яваскрипт? |
Возможно, только в пределах одного домена
|
хммм
может я неправильно понимаю значение слова "домен", но разве вышеприведенный скрипт не действует в домене http://javascript.ru/ ? |
Вы свой скрипт не с javascript.ru же запускаете?
|
нет....а если запущу с него, и создастся новое окно то все будет работать?
|
Да.
|
захожу на javascript.ru, вставляю этот код через javascript:
и все как я и рассказывал... |
вставляю его в адресную строку...
|
Вот такой код должен работать точно:
var newWind = window.open("http://javascript.ru/"); newWind.onload = function () { newWind.location = newWind.document.getElementsByTagName("A")[3]; }; Только запускать его надо с главной страницы, а не страницы форума - потому что даже в пределах одного домена, страницы с субдоменов имеют только одностороннюю связь. |
ну помойму уже не логично, т.к. док уже загрузился, а я только потом на окно вешаю онлоад...
да и потом, ну конечно же я запускал с главной страницы запуск этого скрипта открыл новое окно с http://javascript.ru/ в исходном окне он выдал мне строку function () { newWind.location = newWind.document.getElementsByTagName("A")[3]; } и усе... |
Freak,
То, что выдает браузер при выполнении JavaScript из адресной строки - другой вопрос, там есть свои особенности. Какая вообще суть вашей задачи? Цитата:
|
ну в принципе, суть написать строку на яваскрипт, вставив которую в адресную строку, с нужного домена, я бы смог открыть окно и в нем другую стр этого же домена, в этом доке найти ссылку и перейти по ней в этом, новосозданном окне
|
У меня похожая проблема: событие onLoad возникает до того, как страница загрузилась полностью, и нельзя выполнять какие-либо действия с элементами дочернего окна.
наприммер new = open("www.mysite.ru", ""); function dosomething() { alert('start'); new.document.getElementById('element').value = "text"; alert('finish'); } new.onload = dosomething(); В результате увидим тока 'start', текста елемента 'елемент' не изменится, надпись 'finish' не появится... Можно конечно поставить задержку в главном скрипте дабы подождать пока загрузится дочернее, но это не решение проблемы.. Может кто-то знает нормальное решение проблемы? |
integrable,
Вы должны в качестве обработчика установить саму функцию, а не результат её выполнения: new.onload = dosomething; // Без скобок вызова Кстати, "new" является зарезервированным словом для языка JavaScript. Крайне не рекомендуется называть так переменные или функции. |
спс большое, а то я уже совсем запутался...
и еще вопрос, если не затруднит: Для сайта с чужого домена с родительского окна, как в предыдущем примере, onload поменять нельзя, я так полагаю. А нужно как-то проследить момент, когда этот "чужой" сайт загрузился в дочернем окне.. Это возможно как-то??? |
integrable,
Нет, не получится. |
Андрей Параничев
спс за помощь! |
Часовой пояс GMT +3, время: 03:06. |