2013-05-06 3 views
0

Может быть, есть сервал подвопросы для моей проблемы:«attacheventlistener» и «OnClick» прототип

  • Существует ли общее решение, чтобы получить событие привязываться к элементу (без JQuery или другого яваскрипт Librarys?).
  • Я нашел $(element).data('events') не удалось зарегистрировать событие с <element onclick="some_functions()">. Как мы можем это получить?

Моя цель - вставить событие перед собственным событием (зарегистрированным программистом на странице html). Я нашел два решения.

Однако, я считаю, обе эти методы не могут решить ситуацию как этот

<element onclick="some_functions()"> 

ответ

0

Вы можете получить доступ (и перезаписывать) этот обработчик события через свойство onclick. Если у вас есть

<span id="elem" onclick="some_functions()"> 

тогда document.getElementById("elem").onclick даст анонимную функцию

function (event) { 
    some_functions() 
} 

Чтобы перехватить его, вы можете использовать что-то вроде

var fn = elem.onclick; 
elem.onclick = function() { 
    console.log("before"); 
    var res = fn.apply(this, arguments); 
    console.log("after"); 
    return res; 
}; 

Отказ от ответственности: Это может быть не в старых браузерах, Я не знаю, как обрабатывали эти изобретатели (Netscape, IE) обработчиков событий inline-атрибутов и традиционную регистрацию событий. Они могли бы также сделать что-то вроде eval(elem.getAttribute("onclick")), в любом случае вы можете получить доступ к коду обработчика (в виде строки).

+0

Для первых вопросов, можем ли мы получить все события, привязанные к одному элементу, используя только javascript? Возможно, не перекрестный браузер, просто для Chrome. –

+0

Нет, не программно от JS по крайней мере. Однако вы можете проверить их в инструментах dev. Я думал, вы уже нашли этот ответ в связанных вопросах? – Bergi

Смежные вопросы