Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 03.10.2008, 11:48
Интересующийся
Отправить личное сообщение для GOll Посмотреть профиль Найти все сообщения от GOll
 
Регистрация: 27.06.2008
Сообщений: 29

Проблема в 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(). Почему так происходит?
Как можно решить проблему?
Ответить с цитированием
  #2 (permalink)  
Старый 03.10.2008, 11:58
Аватар для Snipe
Профессор
Отправить личное сообщение для Snipe Посмотреть профиль Найти все сообщения от Snipe
 
Регистрация: 06.05.2008
Сообщений: 765

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

В случае с интервалом текущий документ уже закрыт для записи и document.write() перезаписывает документ.
Ответить с цитированием
  #3 (permalink)  
Старый 03.10.2008, 12:06
Интересующийся
Отправить личное сообщение для GOll Посмотреть профиль Найти все сообщения от GOll
 
Регистрация: 27.06.2008
Сообщений: 29

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

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

к DOM элементу, наподобие innerHTML?
Ответить с цитированием
  #4 (permalink)  
Старый 03.10.2008, 12:13
Отправить личное сообщение для Андрей Параничев Посмотреть профиль Найти все сообщения от Андрей Параничев
 
Регистрация: 21.02.2008
Сообщений: 1,250

Нет. Вам нужно будет работать с DOM элементами, если вы хотите сделать что-то после загрузки документа.
Ответить с цитированием
  #5 (permalink)  
Старый 03.10.2008, 12:15
Аватар для Snipe
Профессор
Отправить личное сообщение для Snipe Посмотреть профиль Найти все сообщения от Snipe
 
Регистрация: 06.05.2008
Сообщений: 765

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

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

Можно, конечно, в отдельных случаях сделать замену document.write (через DOM), но это не есть карашо, не тревиально и работает через раз...
Ответить с цитированием
  #6 (permalink)  
Старый 03.10.2008, 12:21
Интересующийся
Отправить личное сообщение для GOll Посмотреть профиль Найти все сообщения от GOll
 
Регистрация: 27.06.2008
Сообщений: 29

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

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

Можно, конечно, в отдельных случаях сделать замену (через DOM), но это не есть карашо, не тревиально и работает через раз...
Получается выход один - подгружать сам скрипт после загруpки DOM AJAX-ом в нужно место, хотя как это делать ещё не разобрался .
А при этом способе не возникнет аналогичная ошибка? ведь document.write() там будет сидеть всеравно :confused:
Ответить с цитированием
  #7 (permalink)  
Старый 03.10.2008, 12:47
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Вам говорят не использовать document.write вообще, если необходимо произвести какие-либо действия над готовым документом. Никакой AJAX тут не нужен.
Ответить с цитированием
  #8 (permalink)  
Старый 03.10.2008, 12:52
Интересующийся
Отправить личное сообщение для GOll Посмотреть профиль Найти все сообщения от GOll
 
Регистрация: 27.06.2008
Сообщений: 29

Сообщение от Octane Посмотреть сообщение
Никакой AJAX тут не нужен.
Тогда что сообщество может посоветовать? Выход один использовать iframe?
Ответить с цитированием
  #9 (permalink)  
Старый 03.10.2008, 12:56
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Выход один: почитать про работу с DOM в JavaScript. Про то, как создавать и перемещать DOM-узлы. На сайте больше чем достаточно информации по этому вопросу.
Ответить с цитированием
  #10 (permalink)  
Старый 03.10.2008, 14:41
Отправить личное сообщение для Андрей Параничев Посмотреть профиль Найти все сообщения от Андрей Параничев
 
Регистрация: 21.02.2008
Сообщений: 1,250

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Кодировка при использовании Ajax Nichloas AJAX и COMET 9 17.09.2009 16:06
Ремонт часов)) SunYang Общие вопросы Javascript 7 07.08.2008 12:18
Ссылка на объект при использовании attachEvent Octane Events/DOM/Window 13 23.07.2008 17:37