Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Проблема в document.write при использовании setInterval() (https://javascript.ru/forum/misc/1907-problema-v-document-write-pri-ispolzovanii-setinterval.html)

GOll 03.10.2008 11:48

Проблема в document.write при использовании setInterval()
 
Вот у меня проблема, нужно что бы срабатывал некий скрипт(банер), после того как отработали мои(они срабатывают после загрузки DOM).
Что делаю: ставлю флаг loadBanerLoaded который принимает значение true, только тогда когда отработают основные скрипты, а другой код обрамляю
var _timerRight_ban = setInterval(
                function() {
                            if (loadBanerLoaded) {
                                clearInterval(_timerRight_ban);
                                   document.write ("Что то банер пишет");
                                }
                            }, 10);


Если не использовать setInterval(), то срабатывает document.write ("Что то банер пишет"); и в нужном мести пишет что надо. Но при использовании setInterval(), вся страница переписывается document.write(). Почему так происходит?
Как можно решить проблему?
:(

Snipe 03.10.2008 11:58

Потому что document.write() пишет в документ в тот момент когда выполняется и туда, где выполняется.

В случае с интервалом текущий документ уже закрыт для записи и document.write() перезаписывает документ.

GOll 03.10.2008 12:06

Цитата:

Сообщение от Snipe (Сообщение 6610)
Потому что document.write() пишет в документ в тот момент когда выполняется и туда, где выполняется.

В случае с интервалом текущий документ уже закрыт для записи и document.write() перезаписывает документ.

Получается такое решение не подходит, по причине того что, когда DOM загрузился он переписывает всю страницу? А можно применить FF()
var FF = function (){document.write};

к DOM элементу, наподобие innerHTML?

Андрей Параничев 03.10.2008 12:13

Нет. Вам нужно будет работать с DOM элементами, если вы хотите сделать что-то после загрузки документа.

Snipe 03.10.2008 12:15

Нет никакой разницы как оформлять, если документ уже загружен document.write() попытается его перезаписать.

Если скрипт, который вы хотите подключить после загрузки DOM, использует document.write(), то опять же - дело гиблое.

Можно, конечно, в отдельных случаях сделать замену document.write (через DOM), но это не есть карашо, не тревиально и работает через раз...

GOll 03.10.2008 12:21

Цитата:

Сообщение от Snipe (Сообщение 6614)
Нет никакой разницы как оформлять, если документ уже загружен document.write() попытается его перезаписать.

Если скрипт, который вы хотите подключить после загрузки DOM, использует document.write(), то опять же - дело гиблое.

Можно, конечно, в отдельных случаях сделать замену (через DOM), но это не есть карашо, не тревиально и работает через раз...

Получается выход один - подгружать сам скрипт после загруpки DOM AJAX-ом в нужно место, хотя как это делать ещё не разобрался :(.
А при этом способе не возникнет аналогичная ошибка? ведь document.write() там будет сидеть всеравно :confused:

Octane 03.10.2008 12:47

Вам говорят не использовать document.write вообще, если необходимо произвести какие-либо действия над готовым документом. Никакой AJAX тут не нужен.

GOll 03.10.2008 12:52

Цитата:

Сообщение от Octane (Сообщение 6617)
Никакой AJAX тут не нужен.

Тогда что сообщество может посоветовать? Выход один использовать iframe?

Octane 03.10.2008 12:56

Выход один: почитать про работу с DOM в JavaScript. Про то, как создавать и перемещать DOM-узлы. На сайте больше чем достаточно информации по этому вопросу.

Андрей Параничев 03.10.2008 14:41

Octane,
Тут немного сложнее - скрипты сторонние, в них document.write.
Не заставишь же их переписать свои скрипты, чтоб они работали после загрузки DOM.


Часовой пояс GMT +3, время: 11:00.