`

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

 
阅读更多

例如:

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

 

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

 

 

 

 

 

分享到:
评论

相关推荐

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

    本文实例讲述了JS防止网页被嵌入iframe框架的方法。分享给大家供大家参考,具体如下: 例如: [removed] if (window!=top) // 判断当前的window对象是否是top对象 top.location.href = [removed].href; // 如果...

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

    除了上述JavaScript实现的防嵌入框架方法外,还可以使用HTTP头部的X-Frame-Options响应头来设置网页是否可以被嵌入框架中,这是一种由服务器端控制的机制,通过设置该响应头为DENY或SAMEORIGIN,可以有效防止网页被...

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

    为了避免这种情况,网站开发者需要采取措施来防止自己的网页被嵌入框架。本文将详细介绍两种有效的方法。 方法一:使用JavaScript检测并跳出框架 这种方法基于JavaScript的条件判断,其核心代码如下: ```...

    一个简单实用的网页框架

    在网页框架中,`iframe`常常被用来加载独立的内容区域,例如广告、地图、视频或者跨域的数据。`iframe`的一个显著优点是它可以在不刷新整个页面的情况下更新部分内容,这在实现动态更新和模块化设计时非常有用。 在...

    500多个html网页格式的各种源代码

    1.6 保护自己的网页不被放入框架.htm 1.7 打印页面的出错原因.htm 1.8 当前网页调用其他网页.htm 1.9 倒计时载入页面.htm 1.10 定义网页的关键字.htm 1.11 进入页面同时弹出欢迎对话框.htm 1.12 禁止网页另存...

    JS网页屏蔽右键代码.txt

    最后,代码中还有防止网页被嵌入到其他框架中的逻辑,以保护网站的完整性和版权: ```javascript if (window == top) top.location.href = "frames.htm"; ``` 这段代码检查当前窗口是否是顶级窗口,如果不是,则...

    网页制作常用代码

    此外,通过JavaScript函数`oncontextmenu="return false"`和`onselectstart="return false"`可以禁用网页上的右键点击上下文菜单和文本选择功能,这对于保护网站内容不被轻易复制或防止意外操作具有一定的作用。...

    网页制作精华代码大全

    **知识点解析**:与第5点类似,此脚本同样用于防止网页被嵌入到其他框架中。如果当前页面不是顶级窗口,则将顶级窗口的地址重定向为当前页面地址,以此来防止框架嵌入。 #### 7. 在不同浏览器中查看源代码 **代码...

    网页制作--经典代码

    //--&gt;&lt;/script&gt;` 可以检查当前页面是否位于顶级窗口,如果不是,则重定向到指定页面,防止页面被他人嵌入框架中。 6. 更高级的防止被frame的技巧: `&lt;SCRIPT LANGUAGE=javascript&gt;&lt;!-- if (top.location != self....

    网页代码大全

    ` 这些脚本可以防止网站被嵌入到别人的框架中,确保用户直接访问完整页面。 7. `&lt;noscript&gt;&lt;iframe src=*.html&gt;&lt;/iframe&gt;&lt;/noscript&gt;`: 通过这种方式,可以防止用户将网页另存为HTML文件,提高内容安全性。 8. ...

    网页多种挂马代码,JS

    ### 网页挂马代码分析 #### 一、IFrame挂马技术 **知识点:** 1. **IFrame的基本用途与挂马原理** - IFrame(Inline Frame)是HTML文档中的一个内联框架,它允许在当前页面内嵌入另一个页面。 - 挂马原理在于...

    php代码管理系统 管理你自己的代码

    同时,iframe也可以帮助隔离代码执行环境,防止一个文件的错误影响到其他文件的展示。 总结,这款基于PHP的代码管理系统充分利用了Prototype库和Ajax技术,提供了便捷的代码管理功能,并结合iframe技术优化了代码的...

    javascript经典代码大全.pdf

    `:这段代码检测当前页面是否在框架(frame)中,如果是,则重定向到指定的框架网页,防止被嵌入到其他网站的框架中。 8. `if (top.location != self.location) top.location=self.location;`:这个脚本防止了页面...

    JavaScript经典代码大全

    7. 查看源代码按钮:`查看网页源代码 onclick="window.location = `view-source:`+ http://www.51js.com/`";&gt;` 创建一个按钮,点击后直接跳转至源代码查看器。 8. 确认删除操作:`&lt;a href="javascript:if(confirm(...

    JS代码大全,最全的网页代码效果[归纳].pdf

    ` 这段代码用于确保当前页面是框架集的顶级页面,如果不是,则重定向到指定的框架页,防止页面被嵌入到其他框架中。 7. 同样的,`if (top.location != self.location)top.location=self.location;` 用于防止页面被...

    JavaScript 经典代码大全

    `:这段代码检查当前页面是否在框架集(frame)中,如果是,则重定向到指定的框架网页,防止别人嵌入你的页面。 8. `if (top.location != self.location) top.location=self.location;`:这行代码防止了你的页面被...

    网页经典代码集 高手必学 网页经典代码集 高手必学

    此代码段可以防止网页被其他网站作为框架内容显示: ```html &lt;script language="javascript"&gt; if(top.location!=self.location) top.location=self.location; ``` ### 10. 禁止网页另存为 使用`&lt;noscript&gt;`标签...

Global site tag (gtag.js) - Google Analytics