防止网页被嵌入框架的代码(续)

两年前,我写过一段代码,防止网页被嵌入框架(Frame)。

<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;

}

好了,升级版代码完成。除了本地域名以外,其他域名一律无法将你的网页嵌入框架。我的Blog现在就使用这段代码。

==============================

时间: 2024-09-09 01:16:31

防止网页被嵌入框架的代码(续)的相关文章

防止网页被嵌入框架的代码

最近,国内开始流行另一种流氓行为:使用框架(Frame),将你的网页嵌入它的网页中. 比如,有一家网站号称自己是"口碑聚合门户",提供全国各个网上论坛的精华内容.但是,其实它就是用框架抓取他人的网页,然后在上面加上自己的广告和站标,这同盗版书商有何不同?! 不明内情的访问者,只看到地址栏是该门户的URL,不知道真正内容部分的网页,其实来自另一个网站. 为什么我反对这种做法? 1)它故意屏蔽了被嵌入网页的网址,侵犯了原作者的著作权,以及访问者的知情权: 2)大量业者使用的是不可见框架,使

JavaScript防止网页被嵌入框架的例子

问说网之前被恶意网站嵌入框架,而且网页的标题和内容都跟问说网完全不相干,明显就是为了欺骗用户浏览,对于这个问题我们是可以通过JavaScript脚本测底解决. 国内似乎这个现象很普遍,载入被人的网页,然后放上自己的广告和站标,这和盗版书商有何不同? 不明内情的访问者,只看到地址栏是该网站的URL,不知道真正内容部分的网页,其实来自另一个网站,严重损害了源站的流量和用户体验. 我为什么反对这种做法? 可能框架给我们带来了很多的好处,目前网站的广告基本都是采用框架载入,但是在正常的网页里面,我是极力

防止网页被嵌入框架的方法介绍

我写了一段很简单的javascript代码,大家只要将它放入网页源码的头部,那些流氓就没有办法使用你的网页了.  代码如下 复制代码 <script type="text/javascript"> if (window!=top) // 判断当前的window对象是否是top对象 top.location.href =window.location.href; // 如果不是,将top对象的网址自动导向被嵌入网页的网址 </script> 这段代码是有效的.但是

如何屏蔽防止别的网站嵌入框架代码_javascript技巧

你的网页是否被别人拿来使用呢,目前有一些聚合网站,在顶部或底部加上自己的广告和LOGO后,开始肆意抓取他站内容,号称提供精华资讯;也有一些站被加入框架(Frame)导致流量被刷. 被别人这样利用,虽然也能增加自己的流量,但不知情的读者会认为是他站的内容,导致用户流失. 下面通过几种方法给大家介绍如何屏蔽防止别的网站嵌入框架代码. 方法一: <SCRIPT LANGUAGE=javascript> if (top.location != self.location)top.location=se

JavaScript实现防止网页被嵌入Frame框架的代码分享_javascript技巧

最近,国内开始流行另一种流氓行为:使用框架(Frame),将你的网页嵌入它的网页中. 比如,有一家网站号称自己是"口碑聚合门户",提供全国各个网上论坛的精华内容.但是,其实它就是用框架抓取他人的网页,然后在上面加上自己的广告和站标,这同盗版书商有何不同?! 防止方法,在 复制代码 代码如下: </body> 之前加入这段代码: 复制代码 代码如下: <script type="text/javascript">  if ( top.locat

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

本文实例讲述了JS防止网页被嵌入iframe框架的方法.分享给大家供大家参考,具体如下: 例如: <script type="text/javascript"> if (window!=top) // 判断当前的window对象是否是top对象 top.location.href = window.location.href; // 如果不是,将top对象的网址自动导向被嵌入网页的网址 </script> 这段代码是有效的.但是,有一个问题:使用后,任何人都无法

wordpress主题网站怎样禁止别人嵌入框架你的网站

那么,作为被框架的wordpress站长应该怎样防止被别人嵌入框架呢? 其实防止别人框架你的网站也是很简单的.只需一句简单代码就可以实现,代码如下:  代码如下 复制代码 <script language="javascript"> if (self != top) top.location.href = window.location.href; </script> 此JS语句的作用:防止自己的网页被人框架,top.location.href 是最上层的地址,

iframe 嵌套 子页面-请我在网页内嵌入子页面除了iframe外还有其他什么方法么?

问题描述 请我在网页内嵌入子页面除了iframe外还有其他什么方法么? 想知道除了iframe能嵌套子页面外,还有什么其他办法可以实现~作为一个新手希望各位技术牛人不吝赐教! 解决方案 --利用jQuery嵌套 01 先抓取 xunlei.com 的这个页面的 HTML 代码 02 把获取到的 HTML 代码用 jQuery 对象化,再 find 方法查找需要的[嵌套区域]那段代码 03 将[嵌套区域]那代码用 jQuery 对象, 赋值需要网页里

本地运行网页中嵌入的Java applet

问题描述 哪位大神帮忙看下,网页中嵌入的Object如下,有没有办法本地通过命令行来运行?另外能修改运行时的codebase地址吗?<objectclassid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93"width="300"height="80"codebase="http://java.sun.com/update/1.6.0/jinstall-6u12-windows-i586.