window.location.href 和self.location的区别
作者:
秒速五厘米
从字面上就可以理解到 window 指的是当前窗口
而 self 指的是自己 在HTML 中 由于页面可以镶嵌页面
所以这2个就有了 区别
比如说 我有个页面A.HTML 里面嵌套了一个B.HTML
在A中使用 window.location 跳转 就把整个 页面跳转了
而在 A中镶嵌B页面的位置 使用了 self跳转 就只是把B界面跳转了 A页面其他地方没有变化
就拿 很简单的 百度搜索页面来比 你输入不同的搜索内容 变化的只是下面的内容 而搜索栏本身没有变化 就是self实现下面的跳转
1.self:当前窗口对象(如果是在iframe里,则为该框架的窗口对象)
2 .top:父窗口对象
window:典型情况下,浏览器会为每一个打开的html创建对应的window对象,如果这个文档包含了多个框架,则浏览器会为原始文档建立一个window对象,再为每个框架创建额外的window对象。可以再当前窗口中直接使用window的全部属性、方法和集合,即不需要在前面附加计算结果为当前window对象的表达式。虽然window可以省略,但是为了方便阅读以及避免一些漏洞,一般都使用这个关键字。
location:该对象包含当前url信息,拥有多个属性。默认属性为 location.href,表示整个url,即如果设置location="http://www.ddd.cn",则等同于location.href="http://www.ddd.cn".
如果test.html被加入iframe,则跳转到百度页面。
top.location.href:为引用test.html页面url的父窗口对象的url
self.location.href:为引用test.html页面url的子窗口对象url
self.location 指的是当前页面的location
top.location 是指当前页面所属的父页面的location
top.location !== self.location
window.top != window.self
有时侯,你的页面会被别人的frame引用,含在别人的frame中(有时一些站点因内容不足, 会将别人的页面当作自己的一个frame,看起来像是自己本身的页面) 。你当然不会高兴, 访问者也觉得看着不方便。 用了这个js,一旦被别人frame了,会自动弹出。你就不用再担心了!
将下代码copy入你网页和中即可。
self.location == top.location可以判断自己的页面没有被别人引用(然后alert出信息提示用户)
链接:https://www.jianshu.com/p/414dbe166226