
为了防止其他网站使用框架,请将您的网页嵌入其网页中. 您可以将以下简单的Javascript代码放在网页源代码的开头,否则其他人将无法使用您的网页:
<script>
if(window!=top) //判断当前的window对象是否top对象
{
//如果不是,将top对象的网址自动导向被嵌入网页的网址
top.location.href = window.location.href;
}
</script>
但是使用此代码后,没有人可以将您的网页嵌入框架,包括您自己.

是否有一种方法可以使我的页面只能嵌入到我自己的框架中,而不可以嵌入到其他人的框架中?
从表面上看,这个问题很简单. 只需判断一下: 当前框架和顶级框架的域名是否相同,如果答案是否定的,则执行URL重定向.
if(top.location.hostname != window.location.hostname){
top.location.href = window.location.href;
}

但是出乎意料的是,这是错误的,根本无法使用.
假设top.location.hostname是,而window.location.hostname是. 换句话说,111.com在其网页中嵌入了222.com. 比较top.location.hostname时! = Window.location.hostname,结果如何?
浏览器将提示代码错误.

由于它们是跨域的,因此浏览器的安全策略不允许222.com页面在111.com页面上运行,反之亦然. IE将该错误称为“没有权限”. 此外,浏览器甚至不允许您查看top.location.hostname. 对于跨域简单的网页框架代码,当您看到此对象时,将直接报告错误.
那么,应该如何修改代码?
实际上,这提醒我们,我们仅需要检查top.location.hostname是否报告错误. 如果报告错误,表明存在跨域,则对顶部对象执行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;
}
好的,除了本地域名,没有其他域名可以将您的网页嵌入框架.
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/ruanjian/article-204613-1.html
放家里跟放银行里都贬吧
中国人不打中国人
猪狗不如