Есть ли способ перехватить `document.write`? - PullRequest
2 голосов
/ 20 января 2011

Я пытаюсь лениво загрузить некоторый код рекламного сервера ...

На странице у меня есть это на данный момент:

<div class="ad">
    <span>pos_1</span>
</div>

Затем я иду и вытаскиваю всеобъявления, которые должны быть на странице, вызывают их включающий файл javascript, и это дает мне этот прекрасный беспорядок:

function do_ad(pos){
    switch(pos){
        case 'pos_1':
            document.write('first ad text');
            document.write('first ad more text');
            //and so on for many many lines
            break;
        case 'pos_2':
            document.write('second ad text');
            document.write('second ad more text');
            //and so on for many many lines
            break;
    }
}

Затем я хочу заменить интервал результатами объявления объявления document.write.

Есть ли способ заставить его вернуть строку, которая была бы записана на страницу?

Ответы [ 3 ]

6 голосов
/ 20 января 2011

Не понимаю, почему нельзя перезаписать функцию document.write:

document.old_write = document.write;

document.write = function (str) {
    // lalala
};

См. Здесь: http://www.jsfiddle.net/N9hXy/

1 голос
/ 20 января 2011
document.write = function(str) {
    window.buf += str;
}
0 голосов
/ 03 января 2018

Функция do_ad (pos) должна быть где-то вызвана. Почему не там, где должна отображаться реклама?

<div class="ad">
    <script>do_ad("pos_1");</script>
</div>
...