窗口之间有什么区别。Location和document。Location ?它们是否都引用同一个对象?
当前回答
文档。location最初是一个只读属性,尽管Gecko浏览器也允许你为它赋值。为了跨浏览器安全,请使用window。位置相反。
阅读更多:
document.location
window.location
其他回答
我更喜欢使用文档。位置,尽管位置,文档。位置和窗口。Location返回相同的对象。
使用文件的原因。地点是:
窗口的浏览器兼容性部分。位置提到
在Firefox 57之前,通过URL api访问URL时,URL中包含的单引号会被转义。参见bug 1386683。
文档的浏览器兼容性部分。位置提到
全力支持。
Mdn location reference uses document.location in their examples. // location: https://developer.mozilla.org:8080/en-US/search?q=URL#search-results-close-container const loc = document.location; console.log(loc.href); // https://developer.mozilla.org:8080/en-US/search?q=URL#search-results-close-container console.log(loc.protocol); // https: console.log(loc.host); // developer.mozilla.org:8080 console.log(loc.hostname); // developer.mozilla.org console.log(loc.port); // 8080 console.log(loc.pathname); // /en-US/search console.log(loc.search); // ?q=URL console.log(loc.hash); // #search-results-close-container console.log(loc.origin); // https://developer.mozilla.org:8080 location.assign('http://another.site') // load another page
是的,它们是一样的。这是浏览器JS API的众多历史怪癖之一。试着做:
window.location === document.location
Document.location.constructor === window.location.constructor为true。
这是因为它与document.location===window.location中看到的对象完全相同。
因此,不需要比较构造函数或任何其他属性。
文档。location最初是一个只读属性,尽管Gecko浏览器也允许你为它赋值。为了跨浏览器安全,请使用window。位置相反。
阅读更多:
document.location
window.location
尽管大多数人在这里推荐,这就是谷歌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中的协议时,我猜他们有一些原因。
总的来说:我个人相信这份文件。位置和窗口。位置是相同的,但如果巨人与最大的统计使用浏览器像谷歌使用文档。地点,我建议遵循他们。
推荐文章
- jQuery中的live()转换为on()
- 如何区分鼠标的“点击”和“拖动”
- IE9是否支持console.log,它是一个真实的功能吗?
- Node.js同步执行系统命令
- 如何转义JSON字符串包含换行字符使用JavaScript?
- jQuery等价于JavaScript的addEventListener方法
- jQuery需要避免的陷阱
- JavaScript中变量字符串的XML解析
- 'React'指的是一个UMD全局,但当前文件是一个模块
- 为什么useState不触发重新渲染?
- 如何使用回调与useState挂钩在反应
- 网络请求失败
- 如何使用JavaScript大写字符串中每个单词的第一个字母?
- 如何使用箭头函数(公共类字段)作为类方法?
- 使用Javascript的atob解码base64不能正确解码utf-8字符串