0

たぶん、私の問題にはいくつかのサブ質問があります:

  • 要素にバインドされたイベントを取得するための一般的な解決策はありますか? (jquery やその他の JavaScript ライブラリを使用しない場合)。
  • $(element).data('events')に登録されたイベントを取得できないことがわかりました<element onclick="some_functions()">。どうすれば入手できますか?

私の目標は、ネイティブ イベントの前にイベントを挿入することです (html ページのプログラマーによって登録されます)。私は2つの解決策を見つけました。

ただし、これらの方法は両方ともそのような状況を解決できないことがわかりました

<element onclick="some_functions()">
4

1 に答える 1

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) がこれらをどのように処理したかはわかりません。いずれにせよ、そのようなeval(elem.getAttribute("onclick"))ハンドラー コードに (文字列として) アクセスできます。

于 2013-05-06T12:26:49.317 に答える