Показать сообщение отдельно
  #1 (permalink)  
Старый 18.10.2010, 14:55
Кандидат Javascript-наук
Отправить личное сообщение для Jurasmi Посмотреть профиль Найти все сообщения от Jurasmi
 
Регистрация: 25.11.2008
Сообщений: 115

Скопировать обработчики событий с одного элемента на другой.
Есть html-элемент на странице (например div).
На нём висят разные обработчики событий (их набор заранее не известен).
Прямого доступа к коду этих обработчиков нет.

Необходимо динамически создать элемент так, чтобы на нём висели те же самые обработчики тех же самых событий.

Что я делал:
Узнал, что нет способа узнать какие именно обработчики висят на элементе (если только они не назначены через атрибут), значит и скопировать их не получится.

Узнал, что можно сделать так:
<div id="first">first</div><br/>
<div id="simulate">simulate</div>

var first = document.getElementById('first'),
	simulate = document.getElementById('simulate'),
	fHandler = function(){
		console.log('ok');
	};
	
first.onclick = fHandler;

//при наведении мышки на элемент "simulate" срабатывает обработчик 'onclick' элемента "first"
simulate.onmouseover = function(){
	var evt = document.createEvent("MouseEvents");
	evt.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
	first.dispatchEvent(evt);
}

здесь не происходит "копирования" обработчиков, а просто возбуждается событие исходного "донорского" элемента, значит удалить этот элемент нельзя - не сработает обработчик, к тому же я не знаю наперед список отрабатываемых событий.

Господа, нужна ваша помощь.
Как решить задачу?
Ответить с цитированием