Показать сообщение отдельно
  #7 (permalink)  
Старый 20.05.2012, 01:18
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

kulibin, document.write выводит текст в поток, если страница не загружена, и затирает данные и выводит их на чистую страницу.

скрипт m.js подключается после загрузки страницы - значит, этого сделать низя.

подключайте m.js в <head>, и тогда отловить вывод двух скриптов можно будет так :

m.js
var old = document.write;
document.write = function(x){ 
    alert(x) // тут перехватываем вывод  делаем с ним, что хотим.
};

запоминайте вывод в массиве, и потом выводите результаты в элементы после загрузки страницы.. и главное, вернуть на место document.write не забудьте.
function onAvailable(before, after){
    for(var element, elements = document.getElementsByTagName("div"), i = 0; i in elements && !element; i += 1){
        if(elements[i].className === "eMessage"){
            element = elements[i];
        }
    }

    element.insertAdjacentHTML("beforeBegin", '<div>'+before+'</div>');
    element.insertAdjacentHTML("afterEnd", '<div>'+after+'</div>');
};

ну вот и полный код страницы (делать мне нечего)
<!-- это тут m.js -->
<script>
function onAvailable(before, after){
    for(var element, elements = document.getElementsByTagName("div"), i = 0; i in elements && !element; i += 1){
        if(elements[i].className === "eMessage"){
            element = elements[i];
        }
    }

    element.insertAdjacentHTML("beforeBegin", '<div>'+before+'</div>');
    element.insertAdjacentHTML("afterEnd", '<div>'+after+'</div>');
};
var old = document.write, buffer = [];
document.write = function(x){
    buffer.push(x);
};
</script>

<!-- два скрипта. порядок важен -->
<script type="text/javascript" src="http://js.sdelajka.com/hellobefore.js"></script>
<script type="text/javascript" src="http://js.sdelajka.com/helloafter.js"></script>

<div class="eMessage" style="border:1px solid black;">add me</div>

<script>
document.write = old;
onAvailable(buffer[0], buffer[1]);
</script>

Последний раз редактировалось melky, 20.05.2012 в 01:31.
Ответить с цитированием