Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Поймать appendChild (https://javascript.ru/forum/misc/5605-pojjmat-appendchild.html)

Phoenix 26.10.2009 12:26

Поймать appendChild
 
Здравствуйте.

Мне надо перехватывать все событий appendChild. Возможно ли это реализовать?

Мне нужно заменить обработчик этой функции.

Спасибо

Octane 26.10.2009 13:11

Это не событие. Метод переопределить в ИЕ не получится сразу для всех элементов.

Phoenix 26.10.2009 13:13

а если для какого то определенного элемента? допустим для DIV'a.

мне нужно проанализировать создаваемый елемент, и если это скрипт, то дописать в src дополнительно текст.

Octane 26.10.2009 13:18

Ну переопределите у этого элемента метод.

Phoenix 26.10.2009 13:44

хм, а как потом добавить то сам элемент?

document.getElementById('id1').appendChild = function(el){
         //обработка элемента
         document.getElementById('id1').appendChild(el);
}


обрабатывать получается а при добавление рекурсия получается...

Octane 26.10.2009 14:07

var node = document.getElementById("id1");
var append = node.appendChild;
node.appendChild = function(element) {
    //обработка элемента
    append.call(node, element);
};

Phoenix 26.10.2009 15:09

Цитата:

Сообщение от Octane (Сообщение 33540)
var node = document.getElementById("id1");
var append = node.appendChild;
node.appendChild = function(element) {
    //обработка элемента
    append.call(node, element);
};

в IE ругается, что не знает метода call. в ФФ и опере нормально работает

Octane 26.10.2009 15:39

О_о

ну тогда как-то так:
var node = document.getElementById("id1");
var append = node.appendChild;
node.appendChild = function(element) {
	//обработка элемента
	try {
		append.call(node, element);
	} catch(error) {
		append(element);
	}
};

ну или проверку браузера делать

___________

или так:

var node = document.getElementById("id1");
node.append = node.appendChild;
node.appendChild = function(element) {
	//обработка элемента
	node.append(element);
};

Phoenix 26.10.2009 22:08

спасибо большое :) теперь работает правильно :)


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