バニラ JS を使用して、HTML オブジェクト (div) のプロパティ onclick を表示できるかどうかを知りたい
for (var name in element) {
if(name == "onclick"){
// do smt
}
}
バニラ JS を使用して、HTML オブジェクト (div) のプロパティ onclick を表示できるかどうかを知りたい
for (var name in element) {
if(name == "onclick"){
// do smt
}
}
のプロパティを列挙する代わりに、次のようにして のプロパティをelement
すぐに取得できます。onclick
element
var clickHandler = element.onclick;
addEventListener
最近のイベントは(そして古い IE で)バインドされておりattachEvent
、イベント タイプごとに複数のハンドラーを使用できます。プロパティを設定するonevent
と、1 つのハンドラーのみが許可され、上書きされる可能性があり、通常は Web ページでハンドラーをバインドする方法ではありません。
addEventListener
残念ながら、 (and ) にバインドされたリスナーを取得することはできませんattachEvent
。それらを追跡するラッパー関数を作成する必要があります。次に例を示します。
var events = [];
function addEvent(element, eventName, callback) {
element.addEventListener(eventName, callback, false);
var found = false;
for (var i = 0; i < events.length; i++) {
if (events[i].el === element) {
found = true;
events[i].list.push(callback);
break;
}
}
if (!found) {
events.push({
el: element,
list: [callback]
});
}
}
function viewEvents(element) {
for (var i = 0; i < events.length; i++) {
if (events[i].el === element) {
return events[i].list;
}
}
return null;
}
そして、次のように使用します。
var div = document.getElementById("some_id");
addEvent(div, "click", function () {
console.log("whatever");
});
console.log(viewEvents(div));
removeEventListener
(もちろん、ハンドラも削除するためのラッパーが必要ですevents
)