1

コンテキスト メニューを作成するために要素が存在するかどうかを確認することを考えたとき、GUI ページ要素にカスタム コンテキスト メニューを作成できるようにする JavaScript コードを作成するのに忙しかったです。

function element_exists(el){
var tagName=el.tagName;
var exists=0;
for(var a=0;a<document.getElementsByTagName(tagName).length;a++){
    if(document.getElementsByTagName(tagName)[a]==el){
        exists=1;
    }
}
return exists;
}

このコードでは、参照を DOM 要素オブジェクト (以前から格納されている) に渡します。保存されたとしましょうが、それ以来、要素自体をドキュメントから削除しました。

Chrome Canary を使用しています。コンソールでページを編集し、まったく同じタグ名と ID を持つ新しい要素を作成しても、false が返されます。innerText と innerHTML が同じ場合、true を返しますか?

そうでない場合、これはすべての Web ブラウザー (新旧) の標準ですか? すべてが一意である場合、不要なコードを削除できるため、ただ興味があります。

4

1 に答える 1

1

答えはノーだと確信しています。類似した値 (「id」を含む) を持っているかどうかに関係なく、各要素は一意です。

これにより、Chrome で要素のガベージ コレクションがどのように機能するかについての洞察が得られるかもしれません。ただし、他のブラウザがどのように応答するかはわかりません。

http://www.html5rocks.com/en/tutorials/memory/effectivemanagement/

理論をテストするのに役立つツールをいくつか紹介します。

于 2013-08-10T01:25:02.943 に答える