Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Локальное изменение document.write (https://javascript.ru/forum/events/45277-lokalnoe-izmenenie-document-write.html)

TheodoreChe 21.02.2014 16:54

Локальное изменение document.write
 
#jQuery
Появилась необходимость заменить write на append, т.к. при любых моих попытках изменить код янндекс директа, он просто перестает работать, решил заменить document.write на append в лоб.

Но возникла задача: как вернуть document.write его предыдущее значение, после срабатывания в функции inID, чтобы в других частях кода write работал как прежде.

P.S. Если не менять write на append, при использовании document ready, возникает ошибка: вся страница заменяется на тот код который выводит скрипт.
document.write = function(str) {
        $('#ID').append(str);
    }
    
function inID() {
        document.write('<sc' + 'ript type="text/javascript" src="http://an.yandex.ru/system/context.js"></sc' + 'ript>');
    }

$(inID());

danik.js 21.02.2014 17:04

Цитата:

Сообщение от TheodoreChe
при любых моих попытках изменить код янндекс директа

А зачем его изменять? К чему все все эти пляски?

TheodoreChe 21.02.2014 17:17

Цитата:

Сообщение от danik.js
А зачем его изменять? К чему все все эти пляски?

Нужно выводить его(скрипт яндекс директа) только в случае когда подходят css свойства другого элемента.
Поправил описание:
Цитата:

Сообщение от TheodoreChe
P.S. Если не менять write на append, при использовании document ready, возникает ошибка: вся страница заменяется на тот код который выводит скрипт.


danik.js 21.02.2014 17:35

Цитата:

Сообщение от TheodoreChe
только в случае когда подходят css свойства другого элемента

:blink: чо?

TheodoreChe 21.02.2014 17:50

Цитата:

Сообщение от danik.js (Сообщение 298821)
:blink: чо?

Например:
$(function() {
    if ($(#ID2).css('display') == 'block') return;
    inID();
});

Aetae 21.02.2014 18:10

А почему не сделать так:
$('#ID').append('<script type="text/javascript" src="http://an.yandex.ru/system/context.js"></sc' + 'ript>');
или вообще тупо в html
<script type="text/javascript" src="http://an.yandex.ru/system/context.js"></script>
?

Ответ же на конкртеный вопрос банален:
:
var oldWrite = document.write;
document.write = function(str) { $('#ID').append(str) };
// code
document.write = oldWrite;

danik.js 21.02.2014 18:15

Цитата:

Сообщение от TheodoreChe
if ($(#ID2).css('display') == 'block') return;

Ну кто-то же выставил этому блоку стиль display:block, верно? Дык почему бы этому "кто-то" помимо стиля не выставить отображение директа, а? Это же гораздо проще и менее проблемно, ну?

TheodoreChe 21.02.2014 18:33

Всем большое спасибо

danik.js 21.02.2014 18:47

Цитата:

Сообщение от TheodoreChe
Всем большое спасибо

Звучит как "идите нафиг, умники, я не об этом спрашивал" :thanks:

TheodoreChe 21.02.2014 19:05

Цитата:

Сообщение от danik.js (Сообщение 298835)
Звучит как "идите нафиг, умники, я не об этом спрашивал" :thanks:

Предложенные варианты не работают ;) На фиг никого не посылаю, но видимо посижу сам еще.


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