@gongzhen
2017-12-29T14:54:35.000000Z
字数 859
阅读 1693
js
那么 window.location
和 document.location
有什么区别呢?我认为是没有区别的,我已经在多个浏览器中不同页面(包括 iframe
、frame
)中测试了。有人说一个可写,一个只读,这一点也在我的测试中被否定了。同样在 MSDN 中说 location
应用于 window
和 document
,但并未提出二者有区别。所以我认为二者是没有区别的。如果说实在有区别,可能也是 window
和 document
的区别,从这个方面看,可能用 document
更合适一些:
window
:它是一个顶层对象,而不是另一个对象的属性即浏览器的窗口。document
:该对象是window和frames对象的一个属性,是显示于窗口或框架内的一个文档。 三者都用来跳到一个新的url,区别是 href
和 assign
做跳转时会将新地址放到浏览器历史栈中,意味着转到新页面后“后退按钮”仍可以回到该页面(经测试,href
和 assign
使用没区别)。而 replace
会从浏览器历史栈中删除本页面,也就是说跳转到新页面后“后退按钮”不能回到该页面。
用个例子来说明:
假设有A.htm B.htm C.htm三个页面
A.htm里有这样一句:document.location.href="b.htm";
B.htm里有这样一句:document.location.href="c.htm";
注意两个都是可回退的切换。
1: 当从A切换到B再切换到C时,实际内存中保留了三个页面:A、B、C
2: 回退到B时,C页面被清出内存!
3: 再次回退,到A页面时,B页面也被清出内存!
4: 再次向前(不是用切换而是用向前)转到B页面时,内存中保留了两个页面:A、B
如果B.html里是用的replace跳转:document.location.replace('c.html')
, 则在C页面点后退时会直接退到A