JavaScript窗口功能指南之命名窗口和框架
(作者:听风编译 2001年01月19日 11:35)
<FRAME NAME="right" SRC="http://www.dedecms.com/web-art/htmlbase/Javascript/20020322/index.html">
</FRAMESET>
在例子中,文档包含2个框架:left和right。在文档toolbar.html中,链接代码就象下面的一样:
<A HREF="http://www.dedecms.com/web-art/htmlbase/Javascript/20020322/about.html" TARGET="right">About Us</A>
<A HREF="http://www.dedecms.com/web-art/htmlbase/Javascript/20020322/feedback.html" TARGET="right">Feedback</A>
注意, <FORM>标记同样支持TARGET属性,它定义了响应表单的目标窗口。而<BAEE>标记则指明了文档中所有链接的通用默认目标窗口:
<BASE TARGET="right">
上面的标记定义了页面中所有元素的目标位置。以下的HTML元素支持target属性:<A>、<AREA>、<FORM>。
在实际应用中,<BASE>元素必须出现在文档的HEAD标记间,要先于任何指向外部资源的元素前。如果在文档中指定了<BASE>标记,那么链接将不再遵循默认的target位置,而是被明确地指向另外一个不同的target位置:
<HEAD>
<BASE TARGET="right">
</HEAD>
<BODY>
<A HREF="http://www.dedecms.com/web-art/htmlbase/Javascript/20020322/table.html" TARGET="_self">Table of C>About Us</A>
<A HREF="http://www.dedecms.com/web-art/htmlbase/Javascript/20020322/feedback.html">Feedback</A>
</BODY>
如上所见,第1个链接的target是 "_self" (带有一个下划线),这表示当点击这个链接时,新文档会在当前活动的窗口中打开。下表列举了HTML中一些特殊的target位置标识:
新窗口没有命名,换言之,它不能被其他元素的 TARGET 属性所引用。但是当我们使用一个标准的target名字时,会发生什么呢?请看下面的定义:
<A HREF="http://www.dedecms.com/web-art/htmlbase/Javascript/20020322/newtip.html" TARGET="tip">A New Tip</A>
在这种情况下,我们为新窗口提供了一个特殊的名字。 新窗口的名字为 "tip", 因此任何链接或者表单,只要定义了 TARGET="tip", 就会在同一窗口中装载页面。如果没有框架或者窗口匹配指定的target,那么点击链接后将在新窗口中打开。看看下面的例子:
<A HREF="http://ccidnet/" TARGET="_blank">CCIDNET</A>
<A HREF="http://ccidnet/tech/" TARGET="_blank">技术天地</A>
看看产生的效果:
CCIDNET、技术天地
点击第一个链接,将在新窗口中打开文档。点击第二个链接,也将产生一个新窗口。如果再次点击链接,新窗口仍将打开。如你所见,链接每一次被点击都会产生一个新窗口。让我们再试一试下面的例子:
<A HREF="http://ccidnet/" TARGET="main">CCIDNET</A>
<A HREF="http://ccidnet/tech/" TARGET="main">技术天地</A>
效果如下:
CCIDNET、技术天地
点击第一个链接时,产生一个新窗口。接着点击第二个链接,新文档将出现在刚刚打开的窗口中。新窗口定义了明确的名字,叫做 "main", 所以任何指定了 TARGET="main" 的链接或者表单都会在那个窗口被装载。
<!--
alert(''The name of this window is: "'' + window.name + ''"'');
// -->
</SCRIPT>
</BODY>
</HTML>
再看看下面的链接:
<A HREF="http://www.dedecms.com/web-art/htmlbase/Javascript/20020322/showname.html" TARGET="_blank">A New Window</A>
<A HREF="http://www.dedecms.com/web-art/htmlbase/Javascript/20020322/showname.html" TARGET="first">First Window</A>
<A HREF="http://www.dedecms.com/web-art/htmlbase/Javascript/20020322/showname.html" TARGET="sec TARGET="third">Third Window</A>
文档showname.html包含了一个脚本程序,它负责在一个alert对话框中显示窗口的名字。
name 属性属于 window 对象。它可以被任何window对象使用,包括框架。例如,下面的语句设置了一个框架窗口的名字:
parent.frames[1].name = "right";
当操作框架时, 访问不同层窗口是很简单的。如果想参阅更多细节,请访问 Window References 。
HTML不能给当前窗口指派名字。就是说,在当前页面不可能通过HTML代码来设置当前窗口的名字。要实现这个目的,只有一个方法,就是给 window.name 属性分配值。下面来试一试,看看如下的代码,它创建了一个简单按钮,点击后设置当前窗口的名字:
<FORM>
<INPUT TYPE="butt >
</FORM>
点击按钮后,当前窗口的名字就改变为 "myWin", 除非指派其他的值,它会一直保持。 我们可以在其他窗口中包含一些链接,并定义他们的target位置为myWin,就是 TARGET="myWin" 。
如果前面你已经设置了当前窗口的名字为myWin,那么链接将在当前窗口打开。下面是新窗口中的代码:
<A HREF="http://docjs/" TARGET="myWin">Home</A>
<A HREF="http://docjs/tips/" TARGET="myWin">Recent Tips</A>
方便起见,我们给出能将当前窗口的名字设置为空""的按钮的源码:
<form>
<input type=butt name="button2">
</form>
你要注意,不要给2个不同的窗口分配同一个名字。如果2个窗口被分配了同一个名字,那么只有一个窗口被关联,另外一个就将被忽视。
无忧站长学院,建站自然无忧www.5ucms.org