JS防止网页被嵌入iframe框架的方法分析

 更新时间:2016年09月13日 11:47:56   作者:onestopweb  
这篇文章主要介绍了JS防止网页被嵌入iframe框架的方法,结合实例形式分析了针对不同浏览器防止网页被嵌入框架的相关注意事项与操作技巧,需要的朋友可以参考下

本文实例讲述了JS防止网页被嵌入iframe框架的方法。分享给大家供大家参考,具体如下:

例如:

<script type="text/javascript">
  if (window!=top) // 判断当前的window对象是否是top对象
  top.location.href = window.location.href; // 如果不是,将top对象的网址自动导向被嵌入网页的网址
</script>

这段代码是有效的。但是,有一个问题:使用后,任何人都无法再把你的网页嵌入框架了,包括你自己在内。

于是,我今天就在考虑,有没有一种方法,使得我的网页只能被嵌入我自己的框架,而不是别人的框架?

表面上看,这个问题很简单。只要做一个判断:当前框架和顶层框架的域名是否相同,如果答案是否,就做了一个URL重定向。

if (top.location.hostname != window.location.hostname) {
  top.location.href = window.location.href;
}

但是,出乎意料的是,这样写是错误的,根本无法运行。你能看出,错在哪里吗?

假定 top.location.hostname 是 www.111.com,而 window.location.hostname 是 www.222.com。也就是说,111.com把222.com嵌入了它的网页中。这时,比较 top.location.hostname != window.location.hostname 会有什么结果?

浏览器会提示代码出错!

因为它们跨域(cross-domain)了,浏览器的安全政策不允许222.com的网页操作111.com的网页,反之亦然。IE把这种错误叫做"没有权限"。进一步说,浏览器甚至不允许你查看top.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;
}

好了,升级版代码完成。除了本地域名以外,其他域名一律无法将你的网页嵌入框架。

更多关于JavaScript相关内容感兴趣的读者可查看本站专题:《JavaScript操作iframe技巧总结》、《JavaScript数组操作技巧总结》、《JavaScript数学运算用法总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript切换特效与技巧总结》、《JavaScript查找算法技巧总结》、《JavaScript动画特效与技巧汇总》、《JavaScript错误与调试技巧总结》及《JavaScript遍历算法与技巧总结

希望本文所述对大家JavaScript程序设计有所帮助。

相关文章

  • 利用js将ajax获取到的后台数据动态加载至网页中的方法

    利用js将ajax获取到的后台数据动态加载至网页中的方法

    今天小编就为大家分享一篇利用js将ajax获取到的后台数据动态加载至网页中的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-08-08
  • JavaScript必知必会(五) eval 的使用

    JavaScript必知必会(五) eval 的使用

    这篇文章主要介绍了JavaScript必知必会(五) eval 的使用 的相关资料,非常不错具有参考借鉴价值,需要的朋友可以参考下
    2016-06-06
  • 微信小程序模拟cookie的实现

    微信小程序模拟cookie的实现

    本篇文章主要介绍了微信小程序模拟 cookie的实现,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-06-06
  • JavaScript自执行函数和jQuery扩展方法详解

    JavaScript自执行函数和jQuery扩展方法详解

    这篇文章主要为大家详细介绍了JavaScript自执行函数和jQuery扩展方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-10-10
  • JS实现扫雷项目总结

    JS实现扫雷项目总结

    这篇文章主要为大家详细介绍了JS实现扫雷项目总结,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-05-05
  • 微信小程序中遇到的iOS兼容性问题小结

    微信小程序中遇到的iOS兼容性问题小结

    这篇文章主要给大家介绍了关于微信小程序中遇到的一些iOS兼容性问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-11-11
  • js推箱子小游戏步骤代码解析

    js推箱子小游戏步骤代码解析

    本篇文章通过代码分析给大家讲解了JS制作推箱子小游戏的步骤以及要点,需要的朋友参考学习下吧。
    2018-01-01
  • JavaScript canvas实现刮刮乐案例

    JavaScript canvas实现刮刮乐案例

    这篇文章主要为大家详细介绍了JavaScript canvas实现刮刮乐案例,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-10-10
  • js实现京东快递单号查询

    js实现京东快递单号查询

    这篇文章主要为大家详细介绍了js实现京东快递单号查询,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-07-07
  • JS实现的base64加密解密操作示例

    JS实现的base64加密解密操作示例

    这篇文章主要介绍了JS实现的base64加密解密操作,结合实例形式分析了基于javascript的base64加密与解密函数定义与使用相关操作技巧,需要的朋友可以参考下
    2018-04-04

最新评论