2

DOM 要素が読み込まれたときにイベントを追加したいのですが、その要素がまだ DOM にない可能性があります。

私は2つの解決策を考えることができました:

(i) に取り付けdocument.onload()ます。発生するまでに時間がかかる場合があるため、発生した場合は理想的ではありません

(ii) DOM要素の存在をチェックする

window.setInterval(function() {
      if (document.getElementById("id"))  /* do stuff */
    }, 100);

それらのどれも非常にエレガントではありません。より良い解決策はありますか?

編集:私は言及するのを忘れました、私はjQueryを使用したくなく、すべてのページに<head>触れずに自分のスクリプトをに入れたいです<body>

EDIT2:私がそうしている理由は、いくつかの要素の適切な読み込みを追跡し、それらが読み込まれるのにかかる時間と、それらが正しく読み込まれるかどうかを監視するためです。

4

3 に答える 3

1

イベント委任を試すことができます..

クリック イベントをドキュメントに添付し、関数を実行する要素を確認します。

document.onclick = function (event) {
  //IE doesn't pass in the event object
  event = event || window.event;

  //IE uses srcElement as the target
  var target = event.target || event.srcElement;
  var id = target.id;
  if( id === 'id'){
      clickEvent(id);
  }
};

function clickEvent(id){
  console.log("Elemennt with ID : " + id + "has been clicked !!")
};
于 2013-01-10T19:16:42.677 に答える
0

いくつかの調査の結果、より良い普遍的な方法はないと思います。両方にわずかな改善があります。チェックをオンにdocument.onload()して、定期的に行います (変数を保持して、2 回行わないようにします)。

このページでは、DOM が正しく読み込まれているという点で、両方が安全であることを確認しています。

于 2013-03-02T21:30:39.770 に答える