2016-12-13 3 views
0

たとえば。私はconsole.log("window.formA", window.formA);を使用して、私はリターンを持つことができますが、私はconsole.log(window)からwindow.formAを見つけることができない形ウィンドウはクロムの下でドキュメントを評価することができます、なぜですか?

<form name="formA" action="https://www.myhomept.co/z_jay/test/php/requestTest.php" method="post"> 
    <input name="inputA" value="inputValueA"> 
    <button type="submit">submit</button> 
</form> 

があります。

答えて

2

ウェブの初期の段階(標準以前)では、IEはすべての名前付き要素とid'd要素が暗黙的なグローバル変数になることに決めました。他のブラウザもこれに従った。

windowはグローバルオブジェクトであるため、一部のブラウザはこれらの暗黙のグローバルをアタッチすることを決めました。しかし暗黙的なグローバル名がwindowという明示的なプロパティと競合する危険があるため、一部のユーザエージェントはdocumentオブジェクト(この危険が依然として存在する)にアタッチすることを決めました。

ただし、windowをログに記録すると、ブラウザが明示的なプロパティから分離しているため、これらの暗黙のプロパティは表示されません。

ここでは、今日(20年以上経過しています)、従来の理由から、その名前(DOM検索なし)を使用するだけで名前付き(またはID)の要素を参照できます。しかし、この行動は正式には標準化されていなかったし、あなたの質問を思い起こさせるという非常に問題があるため、それらを使う方法が混乱し、なぜ「今あなたは私を見ています。

ストーリーのモラルは、標準に準拠し、グローバルから遠ざかっている、彼らは良いよりも害を及ぼすことです。

// Implicit global 
 
var g = "global"; 
 

 
console.log(window.g); // "global" 
 

 

 
console.log(window); // "g" will be listed

関連する問題