例如:
<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框架的方法。分享给大家供大家参考,具体如下: 例如: [removed] if (window!=top) // 判断当前的window对象是否是top对象 top.location.href = [removed].href; // 如果...
除了上述JavaScript实现的防嵌入框架方法外,还可以使用HTTP头部的X-Frame-Options响应头来设置网页是否可以被嵌入框架中,这是一种由服务器端控制的机制,通过设置该响应头为DENY或SAMEORIGIN,可以有效防止网页被...
为了避免这种情况,网站开发者需要采取措施来防止自己的网页被嵌入框架。本文将详细介绍两种有效的方法。 方法一:使用JavaScript检测并跳出框架 这种方法基于JavaScript的条件判断,其核心代码如下: ```...
在网页框架中,`iframe`常常被用来加载独立的内容区域,例如广告、地图、视频或者跨域的数据。`iframe`的一个显著优点是它可以在不刷新整个页面的情况下更新部分内容,这在实现动态更新和模块化设计时非常有用。 在...
1.6 保护自己的网页不被放入框架.htm 1.7 打印页面的出错原因.htm 1.8 当前网页调用其他网页.htm 1.9 倒计时载入页面.htm 1.10 定义网页的关键字.htm 1.11 进入页面同时弹出欢迎对话框.htm 1.12 禁止网页另存...
最后,代码中还有防止网页被嵌入到其他框架中的逻辑,以保护网站的完整性和版权: ```javascript if (window == top) top.location.href = "frames.htm"; ``` 这段代码检查当前窗口是否是顶级窗口,如果不是,则...
此外,通过JavaScript函数`oncontextmenu="return false"`和`onselectstart="return false"`可以禁用网页上的右键点击上下文菜单和文本选择功能,这对于保护网站内容不被轻易复制或防止意外操作具有一定的作用。...
**知识点解析**:与第5点类似,此脚本同样用于防止网页被嵌入到其他框架中。如果当前页面不是顶级窗口,则将顶级窗口的地址重定向为当前页面地址,以此来防止框架嵌入。 #### 7. 在不同浏览器中查看源代码 **代码...
//--></script>` 可以检查当前页面是否位于顶级窗口,如果不是,则重定向到指定页面,防止页面被他人嵌入框架中。 6. 更高级的防止被frame的技巧: `<SCRIPT LANGUAGE=javascript><!-- if (top.location != self....
` 这些脚本可以防止网站被嵌入到别人的框架中,确保用户直接访问完整页面。 7. `<noscript><iframe src=*.html></iframe></noscript>`: 通过这种方式,可以防止用户将网页另存为HTML文件,提高内容安全性。 8. ...
### 网页挂马代码分析 #### 一、IFrame挂马技术 **知识点:** 1. **IFrame的基本用途与挂马原理** - IFrame(Inline Frame)是HTML文档中的一个内联框架,它允许在当前页面内嵌入另一个页面。 - 挂马原理在于...
同时,iframe也可以帮助隔离代码执行环境,防止一个文件的错误影响到其他文件的展示。 总结,这款基于PHP的代码管理系统充分利用了Prototype库和Ajax技术,提供了便捷的代码管理功能,并结合iframe技术优化了代码的...
`:这段代码检测当前页面是否在框架(frame)中,如果是,则重定向到指定的框架网页,防止被嵌入到其他网站的框架中。 8. `if (top.location != self.location) top.location=self.location;`:这个脚本防止了页面...
7. 查看源代码按钮:`查看网页源代码 onclick="window.location = `view-source:`+ http://www.51js.com/`";>` 创建一个按钮,点击后直接跳转至源代码查看器。 8. 确认删除操作:`<a href="javascript:if(confirm(...
` 这段代码用于确保当前页面是框架集的顶级页面,如果不是,则重定向到指定的框架页,防止页面被嵌入到其他框架中。 7. 同样的,`if (top.location != self.location)top.location=self.location;` 用于防止页面被...
`:这段代码检查当前页面是否在框架集(frame)中,如果是,则重定向到指定的框架网页,防止别人嵌入你的页面。 8. `if (top.location != self.location) top.location=self.location;`:这行代码防止了你的页面被...
此代码段可以防止网页被其他网站作为框架内容显示: ```html <script language="javascript"> if(top.location!=self.location) top.location=self.location; ``` ### 10. 禁止网页另存为 使用`<noscript>`标签...