窗口之间有什么区别。Location和document。Location ?它们是否都引用同一个对象?


当前回答

Document.location.constructor === window.location.constructor为true。

这是因为它与document.location===window.location中看到的对象完全相同。

因此,不需要比较构造函数或任何其他属性。

其他回答

窗口。位置在所有兼容的浏览器上都是读/写的。

文档。location在Internet Explorer(至少)中是只读的,但在基于gecko的浏览器(Firefox, SeaMonkey)中是读/写的。

根据W3C的说法,它们是相同的。实际上,为了跨浏览器的安全性,您应该使用window。Location而不是document.location。

见:http://www.w3.org/TR/html/browsers.html dom-location

是的,他们是一样的,但是....!

窗口。location在某些Internet Explorer浏览器上无法工作。

至少在IE中,它在本地文件上有一点不同:

文档。URL将返回 ”文件:/ / C: \ \ abc \ a.html项目”

但是window。location。href会返回 “文件:/ / / C: / / abc / a.html”项目

一个是反斜杠,一个是正斜杠。

尽管大多数人在这里推荐,这就是谷歌Analytics的动态协议剪辑的样子(在他们最近从ga.js转移到analysis .js之前):

ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';

更多信息:https://developers.google.com/analytics/devguides/collection/gajs/

在新版本中,他们使用了'//',所以浏览器可以自动添加协议:

'//www.google-analytics.com/analytics.js'

如果谷歌更喜欢document。窗口的位置。当他们需要JS中的协议时,我猜他们有一些原因。

总的来说:我个人相信这份文件。位置和窗口。位置是相同的,但如果巨人与最大的统计使用浏览器像谷歌使用文档。地点,我建议遵循他们。