gpt4 book ai didi

javascript - chrome下window可以访问文档,为什么?

转载 作者:行者123 更新时间:2023-12-02 13:49:16 26 4
gpt4 key购买 nike

例如。有一个表格

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

最佳答案

在网络的早期(在标准之前),IE 决定所有命名和 id'd 元素都应该成为隐式全局变量。其他浏览器也纷纷效仿。

由于window是全局对象,一些浏览器决定将这些隐式全局变量附加到它上面。但是,由于隐式全局名称与 window 的显式属性发生冲突的危险,一些用户代理决定将它们附加到 document 对象(这种危险仍然存在) .

但是,当您登录 window 时,您不会看到这些隐式属性,因为浏览器将它们与显式属性分开。

所以,我们今天(20 多年后)就到了这里,由于遗留原因,您仍然可以仅通过使用其名称来引用命名(或 id'd)元素 - 无需 DOM 搜索。但是,由于这种行为从未正式标准化,并且由于您在问题中提出的问题,因此人们对如何使用它们以及为什么会出现“现在您看到我,现在您看不到”的行为感到困惑。

这个故事的寓意是,遵循标准并远离全局化,它们弊大于利。

// Implicit global 
var g = "global";

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


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

关于javascript - chrome下window可以访问文档,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41131157/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com