2016-12-13 65 views
0

例如。有一個表單窗口可以評估chrome下的文件,爲什麼?

<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> 

我用console.log("window.formA", window.formA);,我可以有回報,但我不能從console.log(window)找到window.formA。

回答

2

在web早期(標準之前),IE決定所有的named和id'd元素都應該成爲隱式的全局變量。其他瀏覽器也紛紛效仿。

由於window是全局對象,因此一些瀏覽器決定將這些隱式全局符號附加到該對象上。但是,由於隱式全局名稱與明確屬性window相沖突的危險,一些用戶代理決定將它們附加到document對象(此處仍存在此危險)。

然而,當您登錄window時,您不會僅僅因爲瀏覽器將它們與顯式屬性分開而看到這些隱式屬性。因此,我們今天在這裏(20多年以後),由於遺留的原因,您仍然可以通過使用它的名稱來引用一個named(或id'd)元素 - 不需要DOM搜索。但是,因爲這種行爲從來沒有正式的標準化,並且由於你提出的問題帶來的問題,所以對於如何使用它們以及爲什麼你會看到「現在你看到我,現在你不行」的行爲是困惑的。

故事的寓意是,遵循標準,遠離全局,他們做的更多的不是好處。

// Implicit global 
 
var g = "global"; 
 

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

 

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

相關問題