有的时候,在一个窗口的内容发生变化时,另外一个窗口的内容也应当变化。你可以使用 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);
}
}