Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   document.write по событию (https://javascript.ru/forum/events/27769-document-write-po-sobytiyu.html)

Aetae 24.04.2012 18:44


1. За*я в head его подключать если сказано что скрипт что=то выводит. Ясен х*й , что ни*я не работает.
2. Скорее всего в том скрипте, что передаётся тоже используется document.write, по этому подключить его где-то ещё тоже не вариант, работать всё равно не будет. Надо делать в таком случае свой перехватчик write.

Раед 24.04.2012 19:30

Цитата:

Сообщение от Aetae
свой перехватчик write.

Типа
document.write = function(s) {
 document.getElementById('writeOut').innerHTML += s;
}
??

Aetae 25.04.2012 01:59

Тира того, только функция должна накапливать поступающие данные и только после полной загрузки делать innerHTML, ибо код может подаваться кусками(как в первом посте).

Раед 25.04.2012 10:22

И как по вашему ф-ия должна определять, когда закончится вывод?

melky 25.04.2012 10:27

Цитата:

Сообщение от Раед (Сообщение 171148)
И как по вашему ф-ия должна определять, когда закончится вывод?

когда пройдет секунда с момента последнего перехвата.

Раед 25.04.2012 17:59

melky,
Так что ли?
document.write = function(s) {
 document.write.timer && clearTimeout(document.write.timer);
 document.write.bufer || (document.write.bufer = '');
 document.write.bufer+=s;
 document.write.timer = setTimeout(function(){document.getElementById('writeOut').innerHTML+=document.write.bufer},1000);
}

melky 25.04.2012 19:28

Цитата:

Сообщение от Раед (Сообщение 171256)
melky,
Так что ли?
document.write = function(s) {
 document.write.timer && clearTimeout(document.write.timer);
 document.write.bufer || (document.write.bufer = '');
 document.write.bufer+=s;
 setTimeout(function(){document.getElementById('writeOut').innerHTML+=document.write.bufer},1000);
}

или когда дерево загрузится.

как-то так :

код писался на коленке и не тестился!
var target = document.body, // куда слить баффер.
     old_write = document.write, // на всякий
     buff = ""; // сам баффер

document.write = function(text){ 
     buff += text;
};

document.addEventListener("DOMContentLoaded", function rollback(){
     document.write = old_write; // возвращаем на место старый врайт
     target.insertAdjacentHTML("afterbegin", buff); // вставляем текст.
     document.removeEventListener("DOMContentLoaded", rollback, false); // удаляем обработчик, ибо он уже не нужен.
}, false);

Раед 25.04.2012 19:43

melky,
Не маньячим. Человеку нужен вывод по событию, и скорее всего, по клику там и т.п. А вы ему своё onDOMContentLoaded суёте.

P. S. Свой пост подправил. Там забыл таймер переменной присвоить

melky 25.04.2012 19:47

Цитата:

Сообщение от Раед (Сообщение 171272)
melky,
Не маньячим. Человеку нужен вывод по событию, и скорее всего, по клику там и т.п. А вы ему своё onDOMContentLoaded суёте.

тред не читал, посты писал :)


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