JavaScript系列之同步多个窗口的内容

ZDNet软件频道 时间:2004-05-14 作者:Builder.com |  我要评论()
本文关键词:javatips
有的时候,在一个窗口的内容发生变化时,另外一个窗口的内容也应当变化。你可以使用 JavaScript 同时打开多个 HTML 文件。听起来不错,但是用户通常会被浏览器的 Back 和 Forward 按钮只改变一个 HTML 文件搞得很苦恼,因为这样使窗口完全地不同步。这个技巧可以解决那个问题
本文译自Builder.com,未经许可请勿转载

有的时候,在一个窗口的内容发生变化时,另外一个窗口的内容也应当变化。你可以使用 JavaScript 同时打开多个 HTML 文件。听起来不错,但是用户通常会被浏览器的 Back 和 Forward 按钮只改变一个 HTML 文件搞得很苦恼,因为这样使窗口完全地不同步。这个技巧可以解决那个问题。

同步窗口的函数位于一个大窗口(syncUp)的框架集文件(syncframe.html)中:

function kinShip(url) {
  if (waah != null && waah.child.location.href != url) {
    waah.child.location.replace(url);
  }
}

函数kinship() 检验小窗口(waah)是否打开,以及它的框架 child 是否包含正确的同步文件。如果waah处于打开状态,但框架 child 没有包含同步文件,正确的文件就由 replace() 方法装载。replace() 方法打开一个文件,而无须将其保存到浏览器的历史列表中,从而使同步成为可能。

kinShip() 从 syncframe.html 框架syncee调用:

<body bgcolor="#000000" onLoad="parent.kinShip('sync0b.html')">

我们可以看到同步文件作为一个参数传递给函数kinShip()。

我已经在两个窗口之间定义了一个严格的关系;当其中任何一个关闭时,另外一个也随之关闭。这就意味着如果小窗口用做导航,大窗口用于查看内容;如果没有导航窗口,那么查看窗口也不会出现,反之亦然。

你还可以使用相似的代码同步多个框架。我将在下一个窗口例子中使用这样一个技术同步左框架和右框架。这个代码位于 frameset.html 文件中:

function preNup(loc) {
  if (contexted.location.href != loc) {
  contexted.location.replace(loc);
  }
}


百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134