3

グーグルでいろいろ調べた結果、DOM 内の HTML 要素に関連付けられたすべてのイベントを列挙できるかどうかを尋ねに来ました。

例: 私の文書が

<body onscroll=docScrolled()>
    <span onmouseover=doSomethingElse()> Span is here </span>
    <div id="container">

    <script>
        $("#container").bind("click", doSomething);
</body>

ドキュメントが読み込まれ、すべての JavaScript コードが実行された後、すべての HTML 要素とそれらに関連付けられたイベントを表示するボタンをクリックすると表示されます。

出力

<body onscroll=docScrolled()> ------ onscroll
<span onmouseover=doSomethingElse()> Span is here </span> -----onmouseover
<div id="container"> ------onclick

したがって、最終的な問題は、すべての HTML 要素を列挙し、それらに関連付けられているイベントを見つける方法です。

4

1 に答える 1

2

参考になりそうなページです。

また、このコードは、検索対象の行で何かを実行します。

// List bound events:
console.dir( $('#elem').data('events') );

// Log ALL handlers for ALL events:
$.each($('#elem').data('events'), function(i, event){
    $.each(event, function(i, handler){
        console.log( handler.toString() );
    });
});

更新: https://developer.mozilla.org/en-US/docs/DOM/DOM_event_referenceは、DOM 要素のイベントのリストを示しています。イベントに関数が割り当てられているかどうかを確認する関数を作成する必要があります。

次のようになります。

var events = ["onchange","onkeydown",...]

function hasEventsAssigned(elem) {
    for (var i = events.length; i > 0; i--) {
       if (elem[events.i]) {
           /* do something */
       }
    }
}
于 2012-09-05T14:03:13.660 に答える