Forum Webscript.Ru

Программирование => JavaScript & JScript => Тема начата: Mr_Max от 26 Июня 2004, 20:36:38

Название: Inner + window.open = грабли :(
Отправлено: Mr_Max от 26 Июня 2004, 20:36:38
Доброе время суток.

Чтобы зазря не напрягать пользоватей (равно как и сервер и канал) у меня возникла идея генерить

принт-версию новостей обычным  джаваскриптом...

Но наступил я на грабли

Пробую делать так

function print_news()
    {
    nw = window.open(\'/print.php\');
    nw.document.getElementById("news").innerHTML = \'22222\';
    }

то ничего не выходит... выдат ошибку

Eсли вышенаписанный изменить немного

function print_news()
    {
    nw = window.open(\'/print.php\');
    nw.document.write(\'
Текст для замены
\');

    nw.document.getElementById("news").innerHTML = \'22222\';
    }

То всё рабайтен...
В принципе можно и так выкрутиться, дописать таким способом боди, оформление, но геморойно.

Можно конечно пойти и от обратного
В файле print.php дописать
news.innerHTML = window.opener.surce_news.innerHTML;
Тоже всё будет работать.

Только вот мне интересно почему не код не фурычит в первом случае?
Подскажите плз где ошибка, что не так, и что в таком случае делать?
Или так низззззззяяяяяя? :(( А хоцецца :)
Название: Inner + window.open = грабли :(
Отправлено: Vladn от 28 Июня 2004, 00:21:42
Может быть, в print.php нет элемента с id \'News\'?
Название: Inner + window.open = грабли :(
Отправлено: Mr_Max от 28 Июня 2004, 10:32:04
>>Vladn
Есть
Прикол в том что если открывать страницу через file то рабайтен
имеется ввиду file://localhost/index.php
а если через http://localhost/index.php то нифига.

Как с этим бороться?
Название: Inner + window.open = грабли :(
Отправлено: Mog. от 28 Июня 2004, 12:35:25
Цитировать
Mr_Max:
если открывать страницу через file то рабайтен
...
а если через http://localhost/index.php то нифига.

Это значит, что у тебя дисковая подсистема на компе шустрая и загрузка файла в окно браузера непосредственно с диска происходит быстрее, чем если этот файл запрашивать через сервер.
Цитировать
Mr_Max:
>>Vladn
Есть
(имеется ввиду id news в новом окне)
В случае, когда окошко браузера открылось, но в него документ еще не загружен (потому, что запрос к серверу, ответ от сервера, время, одним словом) идентификатор открытого окна в дж-скрипте уже появился и в него поперла запись (следующая строка в скрипте), а нужного id еще не подгрузило.
Короче, или вводить задержку между этими строками или брать новости родительского окна запросом из потомка после подгрузки документа в него (по событию onload). Второе, ИМХО, корректней.
Название: Inner + window.open = грабли :(
Отправлено: Mr_Max от 28 Июня 2004, 12:51:42
сенк всем за помощь :)