これを実現するスクリプトを作成しました。 2つのグローバル関数、hasEvent(Node elm, String event)
とgetEvents(Node elm)
を利用できます。 EventTarget
プロトタイプメソッドadd/RemoveEventListener
が変更され、HTMLマークアップまたはJavaScriptの構文elm.on_event = ...
によって追加されたイベントでは機能しません(add/RemoveEventListener
のみ)。
More info at GitHub
Live Demo
スクリプト:
var hasEvent,getEvents;!function(){function b(a,b,c){c?a.dataset.events+=","+b:a.dataset.events=a.dataset.events.replace(new RegExp(b),"")}function c(a,c){var d=EventTarget.prototype[a+"EventListener"];return function(a,e,f,g,h){this.dataset.events||(this.dataset.events="");var i=hasEvent(this,a);return c&&i||!c&&!i?(h&&h(),!1):(d.call(this,a,e,f),b(this,a,c),g&&g(),!0)}}hasEvent=function(a,b){var c=a.dataset.events;return c?new RegExp(b).test(c):!1},getEvents=function(a){return a.dataset.events.replace(/(^,+)|(,+$)/g,"").split(",").filter(function(a){return""!==a})},EventTarget.prototype.addEventListener=c("add",!0),EventTarget.prototype.removeEventListener=c("remove",!1)}();
jQueryのためのこのようなものがあります。 FirebugというFirebugの拡張版です。http://firequery.binaryage.com/しかし、ネイティブのjavascriptイベントでも動作するかどうかはわかりません。 – meo
hm ...それは最初のステップです...おそらくそれに慣れるのに時間が必要でしょう – helle