判断页面是否被嵌入框架中

来源:互联网 发布:淘宝买药提交需求后 编辑:程序博客网 时间:2024/05/15 01:44

很多时候你不希望你的页面被嵌入到框架或小窗体,例如,你的一个管理界面中有一个错误页面,当用户操作发生错误的时候,你希望整个页面转到错误页面而不是在框架中的某一块显示,这时候你就可以用下面的客户端方法进行判断,然后处理,在我写的这个例子中处理方法是直接将顶级窗体重定向到被镶嵌的这个页面。

<html>
 <head>
  <title>HTMLPage1</title>
   <script>
 function TopLoad()
 {
  if(top.frames.length>0)
  {
   alert('The Page in one or more frames,so Redirect to the real Page');
   top.location.href="HTMLPage1.htm";
  }
  else
  {
   alert('This is Noframes Page');
  }
 }
 </script>
 </head>
 <body onload="TopLoad()">
  asfdasfdadfas
 </body>
</html>

不过,“‘我’做在的最上级窗体中包不包含框架”这个方法并不是最佳方案,当你的页面也有框架或窗体的时候,上面这个例子就会产生一个无限循环的转向。用最直接的思维:“‘我’是不是最上级的窗体”

那么,判断的地方改为下面这样就行了:

if(top!=self)      //当‘我’不是最上级
{
   //do something
}
else                 //当‘我’是最上级
{
   //do something
}

写得这么罗嗦 是因为我对JS欠熟悉的原因。