JavaScript FAQ(十)——框架(Frame)

43 篇文章 0 订阅
33 篇文章 0 订阅

 八、框架

 

1. 我的页面在框架里吗?(Is my page framed?

Q:我的页面是框架中的页面呢,还是浏览器的顶层窗口呢?

A:要测试页面是否在框架中,可以使用下面的条件操作符:

if (self.location!=top.location) // if yes, you're framed
if (self.location==top.location) // here you aren't framed

示例。我们假设你的网站使用框架提供了一些功能导航(就像这个网站一样www.javascripter.net/faq)。假设你的顶层框架集(frameset)在文件/index.hm中。如果一个用户访问了一些没有在框架的页面,应该如何处理呢?(这种情况可能发生,如用户使用搜索。)对于这类用户,你可能希望显示一个到顶层框架集的超链接——只在页面不在框架中时显示。

if (self.location==top.location) {
  // The page is not in the frameset index.htm !!! 
 document.write('<p><a href="/index.htm">Home page</a>')
}

该页上就使用了类似的代码。如果你在顶层窗口中打开该页,你就会看到一个额外的超链接内容目录(Table of Contents)(就在页面顶端,标题的正下方)。这个超链接会把你带回框架视图。

 

2. 跳出框架(Breaking out of  a frameset

Q:一些不怀好意的家伙会从别的网站把我的页面加载到他们的框架。我如何才能跳出这些框架呢?

A:你只需要测试你的页面是否在框架中,就像上一个问题提到的。如果是,你可以很容易跳出框架:

if (self.location!=top.location) top.location=self.location;

不过,要保守使用这个小技巧——特别是你自己的网站也使用框架时!

 

译者注:

关于这个问题,可以分为两种情况:

1. 对于独立页面,可以采用上面的方法

2. 如果页面也在框架中,可以判断所在框架的名称是否和预设的相同:

if(window.name != "dd")  top.location=self.location;

3. 同时更新两个框架(Updating tow frames at a time?

Q:我是否可以同时更新两个(或更多)框架?

A:可以。同时更新几个框架最简单的方法就是使用JavaScript函数,向即将被更新的框架中加载新页面。例如,如果你有两个框架,left和right,那么同时更新这两个框架的函数就是:

function updateBothFrames() {
 top.left.location="newpage1.htm";
 top.right.location="newpage2.htm";
}

这个函数可以在用户按下一个按钮或者点击一个超链接时调用。下面的例子给出了创建调用这个函数的按钮和超链接的HTML代码:

<a href="javascript:updateBothFrames()">Click here</a>
<input type=button value="Press me" onClick="updateBothFrames()">

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值