标签:嵌入 网页 框架 top hostname window href 报错 location
原文:http://www.ruanyifeng.com/blog/2010/08/anti-frameset_javascript_codes_continued.html
if(window!=top){ //判断当前对象是否为top对象
top.location.href=window.location.href; //若不是,将对象的网址自动导向被嵌入的网址地址
};
缺点:所有的无法再把你的网址去潜入框架包括在自己。
if (top.location.hostname != window.location.hostname) {
top.location.href = window.location.href;
}
这个方案看是可以,这是有个问题会导致if判断里会报错——跨域。
top.location.hostname 是 www.a.com,而 window.location.hostname 是 www.b.com。也就是说,a.com把b.com嵌入了它的网页中。这时,比较 top.location.hostname != window.location.hostname 浏览器会提示代码出错!
只要查看top.location.hostname是否报错就可以了。如果报错了,表明存在跨域,就对top对象进行URL重导向;如果不报错,表明不存在跨域(或者未使用框架),就不采取操作。
try{
top.location.hostname;
}
catch(e){
top.location.href = window.location.href;
}
这样写已经正确了,在IE和Firefox中可以正确运行。但是,Chrome浏览器会出现错误,不知为何,在跨域情况下,Chrome对top.location.hostname不报错!
没办法,只能为了Chrome,再加一段补充代码。
try{
top.location.hostname;
if (top.location.hostname != window.location.hostname) {
top.location.href =window.location.href;
}
}
catch(e){
top.location.href = window.location.href;
}
标签:嵌入,网页,框架,top,hostname,window,href,报错,location 来源: https://blog.csdn.net/baidu_39043816/article/details/100134359
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。