2. CPS616 JavaScript 介绍摘要

BACKWARD FORWARD


编写浏览器脚本 Navigator Scripting
  . 在 HTML 中使用JavaScript
  . 编写事件处理程序脚本(Scripting Event Handler)
  . 技巧与技术

在 HTML 中使用JavaScript
    JavaScript能以两种方式嵌入HTML:
  . 作为语句和函数使用时,用 SCRIPT 标记
  . 作为事件处理程序使用时,用 HTML 标记
SCRIPT 标记
  使用SCRIPT标记把脚本嵌入在HTML中,格式如下:
     
     
     
   LANGUAGE属性作为可选项,用于指定脚本语言,用法如下:
     
     
     
_ 
_ That's all, folks.
_ 
_ 

   例1中的页面显示:

     Hello net.That's all folks.

代码隐匿
    在不识别JavaScript的旧版本浏览器上,可以把脚本放置在注释域中,这样
    JavaScript代码就不会被显示出来. 把整个脚本用HTML的注释标记括起来:

    

定义和调用函数

    在页(page)被装载后,被置于SCRIPT标记之间的脚本被分析.函数被存贮起来,
    但并未执行. 函数由页内的事件调用执行.
    正确理解定义函数与调用函数之间的区别是很重要的,定义函数仅仅是命名了这个
    函数和说明当此函数被调用时做什么,而调用函数才利用传来的参数真正执行指定
    的动作.
    
  例2  一个带有函数和注释的脚本
  
     
     
     
_ 
_ All done.
_ 

   例2中的页面显示:
     
     We passed 5 to the function.
_ The function returned 25.
_ All done.

HEAD标记

     通常,应该在文档的HEAD部分定义页(page)的所有函数,因为HEAD被
     首先装载,这就保证了用户做任何可能调用函数的动作前,函数已全部装载.

    例3 有两个函数的脚本.
    
    
     
     
     
     
     

Thanks. _ 例3的结果: Make Me Big Make me ordinary.undefinedundefined Thanks. 引号 用单引号把字符串常量括起来,用双引号把属性的值括起来,这样脚本能够把 二者区分开. 在上个例子中, 函数bar中,常量left被放在属性值.再举一个例子: 编写事件处理程序脚本(Scripting Event Handlers) Navigator上的JavaScript应用程序大部分是事件驱动的,事件常常是用户动作 的结果. 例如: 按动按钮是一个事件, 结果是把focus赋与一个form元素.Navigator 能够识别一组特定的事件. 你可以定义event handlers脚本,这些脚本在事件发生 时会被自动执行. 事件处理程序是作为HTML标记的属性放在文档中的,把要执行JavaScript代码赋 给HTML标记. 语法如下: 其中, TAG是HTML的某一标记, eventHandler是事件处理程序的名称. 例如, 假定已创建了一个名为compute的JavaScript函数,你可以把对该 函数的调用赋给这个按钮的onClick事件处理程序,从而实现当用户按此按钮时, Navigator执行函数compute. 你可以把任何JavaScript语句放在onClick后的引号内,多个语句之间用分号隔开. 这些语句只在当用户按动此按钮时才被执行. 一般说来,把自己的事件处理程序定义成函数是一种好习惯,因为: . 这使你的代码模块化--- 同一个函数可以作为多个不同item的事件处理程序. . 这使你的代码容易读懂. 请注意,在此例中,使用this.form来引用当前form, 关键字this用来引 用当前对象,此处即指button对象,于是this.form结构被用来引用包含此button 的form. 上例中onClick事件处理程序是以this.form(当前form)为参数调用 compute()函数. 能用于HTML标记中的事件如下: . Focus, Blur, Change事件: 文本域,文本区和选择 . Click事件: 按钮,无线按钮,核对框,递交按钮,复位按钮,链接 . Select事件: 文本域,文本区 . MouseOver事件: 链接 如果一事件可用在HTML标记里, 则可以给它定义事件处理程序.通常事件处理 程序的名称是以on开头,后跟事件名称. 如, Focus的处理程序名为onFocus. 许多对象有模拟事件的方法(method).如,button有一个名为click的方法能 模拟按钮被按下. 注意: 模拟事件的方法不能触发事件处理程序.如方法click 并不能触发事件处理程序onClick. 但是,你可以直接调用事件处理程序(如, 在脚本中,显式调用onClick). *** 此处为表格 *** 事件 何时发生 处理程序 blur 用户将input focus从form元素上移去 onBlur click 用户在form元素或连接上接动鼠标 onClick change 用户改变了文本,文本区或选择元素的值 onChange focus 用户把input focus赋给form元素 onFocus load 用户把页装入Navigator onLoad mouseover 用户把鼠标光标从link或anchor上移过 onMouseOver select 用户选择了form元素的输入域 onSelect submit 用户提交了一个form onSubmit unload 用户退出此页 onUnload 例4 有一个form和一个event handler属性的脚本

_ Enter an expression: _ _ _
_ Result _ _
例4中的页面显示 Enter an expression: Result: 例5 有一个form的脚本, event handler属性置于BODY标记中
Enter a small number : _
例5中的页面显示 Enter a number in the field and then click your mouse anywhere OUTSIDE of the field. Depending on what you enter,you will be prompted to enter another number,or thanked. Please enter a small number: 技巧与技术 本节介绍几种有用的编写脚本的技术 更新页(Updating Pages) 在Navigator上JavaScript是按从页的顶部到下的顺序生成结果. 一旦有些东西 被重新设计(format),你只能靠重新装载此页的办法来改变,目前,你只能更新整 个页, 而不能只更新某一部分. 但是你可以单独更新frame中的"sub-window". 打印 目前, 还不能把用JavaScript产生的输出打印出来. 例如,若你的页上有如下内容,

This is some text 当打印时,你只会打出"This is some text", 即使你能在屏幕上看到两行. 使用引号 一定要区分双引号和单引号,因为在HTML中事件处理程序必须用双引号 括起来,参数用单引号,例如:

另外,你可以用前置反斜线(对引号进行转义. 定义函数 在HTML页的HEAD部分定义全部函数是一个好习惯.这样,在显示任何内容之前, 所有函数均已定义.否则在页还在装载时,用户可能做一些事情触发事件处理程序, 调用了未定义函数,将导致错误. 创建数组 数组是一个有序的值的集合,利用数组名和索引来引用.例如,一个名为emp的数组 存放着雇员的名字,并按雇员编号索引.于是,emp[1]是1号雇员,emp[2]是2号雇员, 依次类推. JavaScript中没有明确的数组数据类型,但由于数组与对象有类似之处(见 JavaScript Object Model),在JavaScript中,很容易创建数组.你可以定义一个 数组对象类型如下: _function MakeArray(n) _ this.length=n; _ for (var i=1; i <= n; i++) _ this[i] = 0 _ return this _ _ 这样就定义了一个数组,第一个属性length表示数组中元素个数(索引为0),其余 各属性初始值为0,索引为大于等于1的整数. 调用new时带上数组名和数组元素的个数,就创建了一个数组. emp=new makeArray(20); 该语句创建了一个名为emp的数组,有20个元素,初始值为0. 操作数组(Populating an Array) _通过给数组元素赋值的办法来操作数组.如: _emp[1]="Casey Jones" _emp[2]="PHil Lesh" _emp[3]="August West" _ _等等. _ 还可以创建对象的数组.如,定义一个名为Employees的对象类型: function Employee(empno,name,dept) _this.empo= empno; _this.name= name; _this.dept= dept; 下列语句则创建了一个此对象的数组: emp=new MakeArray(3) emp[1]=new Employee(1,"Casey Jones", "Engineering") emp[2]=new Employee(2,"Phil Lesh", "Music") emp[3]=new Employee(3,"August",""Admin) 这时,利用函数show_props(在JavaScript Object Model中定义)来显示该 数组中的对象, 如下: for (var n=1; n<=3; n++) _document.write(show_props(emp[n],"emp")+" "); Navigator 对象 . 使用 Navigator 对象 . Navigator对象的层次结构 . JavaScript 和 HTML Layout . 主要的Navigator对象 使用Navigator对象 当向Navigator装载一页时, Navigator就创建了一些与该页、该页的内容及其 它相关信息对应的对象. 每页(page)上一般要有下述对象: . window: 最顶层的对象, window的属性对应于整个窗口,在多frame 文档中(frames document), 每个子窗口都对应一个window对象. . location: 其属性对应于当前URL. . history: 其属性对应于用户曾经访问过的URL. . document: 其属性对应于当前文档的内容,如标题、背景色和form等. document对象的属性大部分是与内容相关的(content-dependent),也就是说, 这些对象是基于文档的内容而创建的. 如, document对象为文档中的每个 form和anchor设置了一个属性. 如, 创建一个名为simple.html的页,该页的HTML如下: A Simple Document <BODY><FORM> NAME ="myform" ACTION ="FormProc()" METHOD="get" >Enter a value: <INPUT TY Check if you want: <INPUT TYPE="checkbos" NAME="Check1" CHECKED onClick ='update(this.form)"> Option #1 <P> <INPUT TYPE="button" NAME="Button1" VALUE ='Press Me" onClik="update(this.form)"> </FORM></BODY> 则会产生window, location, history和document对象,这些对象有下述属性: location.href="http://www.terrapin.com/samples/vsimple.html" document.tile="A Simple Document" document.fgColor=#000000 document.bgColor=#ffffff history.lenth=7 这些取值仅是一个例子.实际上,这些值取决于真正文档的位置,标题,前景, 背景颜色等. Navigator 还将根据页的内容创建下述的对象: document.myform document.myform.Check1 document.myform.Button1 这时,对象应有下述属性: document.myform.action=http://terapin/mocha/formproc() document.myform.method=get document.myform.lenth=5 document.myform.Button1.value=Press Me document.myform.Button.name=Button1 document.myform.text1.value=blahblah document.myform.text1.name=text1 document.myform.Check1.defaultChecked=true document.myform.Check1.value=on document.myform.Check1.name=Check1 注意: 上例中,每个属性的引用都是以document开始,然后是form的名称myform, 再是属性名或者form元素的名称.这个顺序遵循了Navigator对象的层次结构. Navigator对象的层次结构 各Navigator对象之间存在着层次关系,这种层次性反映了HTML页自身的层次结构. 虽然你不能根据这些对象推知对象类(在Java中可以),但是理解Navigator中JavaScript 类的层次属性仍是有益的.由于这种层次性涉及的是各个对象的实例,而不是对象的类, 所以在严格的面向对象的观念中,被称为实例层次性. 在这种层次性中,对象的"后代"是指此对象的属性.例如: 一个名为form1d的form是 一个对象,它同时也是document对象的一个属性,记作document.form1. Navigator 的层次关系如下: navigator window | +--parent, frames, self, top | +--location | +--history | +--document | +--forms | | | elements (text fields, textarea, checkbos, password | radio, select, button,submit,reset) +--links | +--anchors 为了引用对象的某些属性,需要指明该对象的名称和它所有的祖先. 特例:不需要包括window对象. JavaScript 和 HTML Layout 要想在Navigator中正确使用JavaScript,就要对Navigator怎样处理layout有一个基 本了解,layout是指从枯燥的HTML文本规程到计算机上图形显示的转换.一般说来, layout是被Navigator顺序处理的, 即Navigator从HTML文件的顶部开始,一边计算怎样 把输出显示在屏幕上,一边依次向后处理. 这样,Navigator从HTML文档的HEAD部分开始, 然后再从BODY的顶部开始依次处理. 由于这种"自顶向下"的做法, JavaScript只能反映出它已经遇到过的HTML.例如, 假定你定义了一个具有两个文本输入元素的form, 则这两个元素由 JavaScript 的两个对象document.statform.username和document.statform.userage来反映. 你能在form被定义之后的任何位置使用它,而不能在form被定义之前使用它. 如,在一个脚本里, 在定义了form之后,可以显示这些对象的值: <SCRIPT> document.write(document.statform.username.value) document.write(document.statform.userage.value) </SCRIPT> 但是,如果想在定义form之前这样做(如,在此HTML页中,在定义这个form前面),就会 导致错误. 因为Navigator中,尚不存在这些对象. 类似地,一旦layout已经被显示出来,再设置某个属性值,既不能改变其值,也不会改 变显示情况.例如, 假如你的文档标题定义如下: <TITLE>My JavaScript Page 则在JavaScript中"My JavaScript Page"被作为document.title的值.一旦Navigator 已经在layout中把它显示出来(此例中,显示在Navigator窗口的标题条中),就不能 再在JavaScript中改变这个值.所以,若该页的后面部分有下述脚本: document.title="The New Improved JavaScript Page" 不能改变document.title的值,也不会改变页的外观,也不会产生错误. 重要的 Navigator 对象 最有用的Navigator对象有document,form和window. 使用 document 对象 document 对象很重要,因为它的两个方法(method)write和writeln能生成HTML. 借助这两个方法, 可以向用户显示JavaScript表达式. 二者的区别在于writeln 在行尾加了一个回车,但是由于HTML忽略回车,所以这一点差别只对预定义格式 文本(preformatted text)有影响.如,PRE标记内部的文本. document对象还有两个事件处理程序, onLoad和onUnload, 以便当用户初次装 载页或是退出页时完成一些功能. 每个页中只有一个document对象,它是该页内所有form, link, anchor对象的 祖先. 使用form对象 Navigator为文档内的每个框架创建一个form对象.可以用NAME属性给form命名, 方法如下:
...
这样就产生了一个基于此框架的名为myform的JavaScript对象.这个form中有一 个属性对应着text对象. 你可以用下述办法引用这个text对象. _ _document.myform.quantity _ 你还可以这样引用text对象的属性value. __document.myform.quantity.value _ 一个文档内的所有form存放在名为forms的数组中, 第一个form(在该页最顶部) 记为form[0],第二个为form[1],依次类推.所以前面引用还可以记为: _document.forms[0].quantity __document.forms[1].quantity.value 类似地, form内的各元素, 如文本域,无线按钮等等, 均存在数组element中. 使用window对象 window对象是浏览器(Navigator)中所有其它对象的"父对象".在引用窗口的属性和 方法时,可以省略window对象的名字. window对象的下述几个方法(method)很有用,可以用来创建新的窗口和弹出式对话框: . open 和 close : 打开或关闭一个浏览器(browser)窗口 . alert: 弹出一个警示对话框 . confirm: 弹出一个确认对话框 window对象的属性对应于frameset内的所有frame, 这些frame存放在frameset中. frameset中包含同一窗口中各个子frame的入口.例如,若一个窗口中有三个子frame, 这些子frame就用window.frame[0], window.frame[1]和 window.frame[2]表示. 属性status用于设置位于客户窗口底部状态栏内的信息. 使用window 和 frame JavaScript允许创建和打开代表HTML文本, form对象和frame的窗口. window对象 是JavaScript客户层次结构的最顶层对象, form元素和全部JavaScript代码都是存 在于文档中,而文档被装载进窗口. 为了理解窗口怎样工作,你可以控制操作这些窗口. . 打开和关闭窗口 . 使用 frame . 引用窗口和 frame . 在窗口之间浏览(navigating) 打开和关闭窗口 当用户启动(launch)Navigator时,将自动创建一个窗口.用户还可以使用Navigator的 File菜单上的New Web Browser打开一个窗口, 可以用Navigator的File菜单的Close 或Exit关闭一个窗口.也可以用程序的办法来打开或关闭一个窗口. 打开窗口 用方法open创建一个窗口.下面语句创建了一个名为msgWindow的窗口,并在该窗口内 显示文件sesame.html的内容. _msgWindow=window.open("sesame.html") 下面的这个语句能够创建一个名为homeWindow的窗口,用于显示Netscape的home page. _homeWindow=window.open("http://www.netscape.com") 窗口可以有两个名字.下述语句创建了一个有两个名字的窗口,第一个名字为msgWindow 用于引用窗口的属性,方法和包含关系, 第二个名字displayWindow用于把窗口作为 form提交 或超文本链的对象来引用时. 创建窗口时,并不要求一定给出窗口名.但是你若打算从另一个窗口中引用此窗口, 则此窗口必须有一个名字.有关使用窗口名字的信息参见windows and frames有关资料. 打开窗口时,可以指定窗口属性,如窗口的高度,宽度,是否包含工具条,location域 或滚动条等等.下述语句创建了一个没有工具条但带有滚动条的窗口. _msgWindow=window.open _("sesame.html","displayWindow","toolbar=no,scrollbars=yes") _有关窗口的属性的细节请参见OPEN 方法. _ 关闭窗口 可以在程序中使用方法close来关闭一个窗口.不允许只关闭一个frame, 而不关掉整个父窗口. 下述语句均可关闭当前窗口: window.close() self.close() //此语句不能用在事件处理程序中 close() 下述语句关闭了一个名为msgWindow的窗口: msgWindow.close() 使用frame frame是一种特殊的窗口,它可以在一个窗口显示多个独立滚动的frame.每个frame 又有各自不同的URL. 各frame可以指向不同的URL,也可以作为其它URL目标,但必须在 同一个窗口内. 一系列的frame 组成页(page). 下图是一个含有三个frame的窗口 This frame is This frame is named listFrame named contentFrame | | | | -----------------v-----------------------------------v------------ | Music Club Toshiko Akiyoshi | | Artists Interlude | | | | Jazz The Beatles | | - T. Akiyoshi Please Please Me | | _ J. Coltrame | | - M. Davis Betty carter | | - D. Gordon Ray Charles and Betty Carter | | | | Soul Jimmy Cliff | | - B. Carter The Harder They Come | | _ R. Charles | | ... ... | ---------------------------------------------------------------- | Alphabetical By category Musician Descriptions | -----------------^---------------------------------------------- | | This frame is named navigateFrame 创建一个frame 在HTML文档中使用标记就可以创建一个frame. 标记在HTML 文档中的唯一作用就是定义组成页的各个frame的布局(layout). 例1 下述语名定义了上图所示的一组frame 下图给出了这些frame的层次结构,虽然有两个frame是在另一个frameset中定义的,但 这三个frame有同一个父亲, 这是因为frame的父亲是它的父窗口,而窗口是由frame而 不是frameset确定的. top | +--listFrame (category.html) | +--contentFrame(titles.html) | +--navigateFrame(navigate.html) 你也可以数组frames引用上述的frame(有关数组frames的信息参见frame对象): . listframe 用 top.frame[0]表示 . contentframe 用 top.frame[1]表示 . navigateframe 用 top.frame[2]表示 例2 可以用另一个办法创建上述窗口: 最前面的两个frame与navigateFrame 各有不同的父辈,顶层的frameset定义如下: 文件muskel3.html包含了上述frame的骨架,并定义了下述frameset. 下图说明了这几个frame的层次关系upperFrame和navigateFrame共享一个父 辈:最顶的window. 而listFrame和contentFrame共享一个父辈:upperFrame. top | | +--listFrame | | (category.html) +---upperFrame-----------| | +--contentFrame | (titles.html) | | | | +--navigateFrame (navigate.html) 可以用下面的办法引用这些frame(关于frame数组的信息参见frame对象). . upperFrame 用 top.frame[0]表示 . navigateFrame 用 top.frame[1]表示 . listFrame 用 upperFrame.frames[0] 或top.frames[0].frames[0]表示 . contentFrame 用upperFrame.frames[1] 或top.frames[0].frames[1]表示 更新frame(updating frames) 只要你说明了frame层次结构,你可以用location属性来设置URL, 以更新frame的 内容. 例如,在使用上节例2中frameset时,若希望用户能够关闭含有字母序或分类序 的画家列表的frame(名为listframe),且只想看到按作曲家排序的作品标题( 在contentFrame中), 则可以向navigateFrame 中加入如下按钮. 当用户按动此按钮时,文件artist.html被加载到名为upperFrame的frame中,而 listFrame和contentFrame被关闭,且不再存在. 引用frame和在frame之间浏览(navigate) 因为frame是一种窗口,所以你可以与使用窗口类似的办法引用frame和在frame 之 间浏览. frame的例子 在上一节中, 若frameset被设计为一个音乐俱乐部的可用的标题,则这些frame及其 HTML文件包括下述的内容: . category.html 位于listFrame中, 放有按分类排序的作曲家列表 . titles.html 位于contentFrame中, 放有按字母序列里各作曲家姓名及该作 曲家的作品标题. . navigate.html 位于navigateFrame中, 放有超文本链, 使用户选择怎样在listFrame 中显示作曲家:以字母序或分类序.这个文件还定义了一个超文本链, 使用户可以显示每个 作曲家的简介. . 附加文件alphabet.html 放有按字母排序的作曲家,当用户想显示字母序列表时, 按动此链,这个文件中就显示在listFrame中. 文件category.html (按分类排序)包含的代码类似于下述: Music Club Artists

Jazz

  • Toshiko Akiyoshi
  • Jon Coltrane
  • Miles Davis
  • Dexter Gordon

    Soul

  • Betty Cater
  • Ray Charles ... 文件 alphabet.html (按字母排序) 包含的代码类似于下述: Music Club Artists
  • Toshiko Akiyoshi
  • The Beatles
  • Betty Carter
  • Ray Charles 文件 navigate.html(在屏幕底部的导航链)包含的代码类似下面. 注 意: artists.html的目标是"_parent". 当用户按动此链时,整个窗口被重写, 因为最上层窗口是navigateFrame的父辈. Alphabetical     By category     Musician Descriptopns 文件titles.html(主文件,显示在右边的框架中)包括的代码大致如下:

    Toshiko Akiyoshi

    Interlude

    The Beatles

    Please Please Me

    Betty Carter

    Ray Charles and Betty Carter ... 有关创建frame语法细节参见frame对象. 引用window和frame 用哪个名字来引用窗口取决于你是想引用窗口的属性、方法和事件处理程序, 还是想把window作为form提交或超文本链的对象. 因为window对象位于JavaScript客户层次结构的最顶层. window是说明窗口 内各对象间包含关系的基础. 引用窗口的属性、方法和事件处理程序 可以用如下办法之一来引用当前窗口或其它窗口的属性、方法及事件处理程序: . self或window: self和window含义相同, 都是指当前窗口, 可以任选其一 来引用当前窗口.如,调用window.close()或self.close()来关闭当前窗口 . top或parent: top和parent均用来替代窗口的名称. top是指最上层的Navigator 窗口, parent则是指包含frameset的窗口.例如,语句 parent.frame2.document.bgColor="teal" 把名为frame2的frame的背景颜色置成teal. frame2是当前frameset的一个frame. .窗口变量的名字: 窗口变量名为打开窗口时指定的变量.如,msgWindow.close 关闭名为msgWindow的窗口. 但是若想在事件处理程序中打开或关闭一个窗口,必须用 window.open()或window.close(),而不能用open()和close().由于JavaScript中的静态 对象的作用域问题, 调用close而不指定对象名等价于document.close(). . 省略窗口名. 因为总是假定了当前窗口,调用窗口的方法和使用其属性时,可 以省略窗口名. 如close()关闭了当前窗口. 有关窗口方法的信息参见window对象 例1 引用当前窗口. 下面这个语句引用了当前窗口内的名为musicform的form. 如果核对框被核对,则该语句显示一个警示. _if (self.document.musicForm.checkbox1.checked) __alert('The checkbox on the misicForm is checked') 例2 引用其它窗口.下面的语句引用了位于窗口checkboxWin的名为musicform的form. 这些语句实现判断是否核对框被核对,执行核对该核对框,判断是否select对象的一个选 项被选中,选择SELECT 对象的一个选项 _//判断是否核对框被核对 _if (checkboxWin.document.musicForm.checkbox2.checked) __alert('The checkbox on the misicForm in checkboxWin is checked') _//执行核对该核对框 _checkboxWin.document.musicForm.checkbox2.checked=true _//判断是否select对象的一个选项被选中 _if (checkboxWin.document.musicForm.musicTypes.options[1].selected) __ alert('Option 1 is selected!') _//选择SELECT 对象的一个选项 _checkboxWin.document.musicForm.musicTypes.selectedIndex=1 _ 例3 引用另一个窗口中的frame. 下述语句引用了窗口window2中的名为frame2 的frame.这条语句把frame2的背景颜色改为紫色,名字frame2必须是在 标记中指明. 能产生frameset. window2.frame2.document.bgColor="violet" 在form提交或超文本链中引用一个窗口 当把一个窗口用作form提交或超文本链的对象时(作为

    标记 的TARGET属性), 要使用窗口名,而不能用窗口变量. 这个窗口将是链被装载进的 窗口,或者对于form来说,是显示服务器响应的窗口. 例1 第二窗口. 下面的例子给第二窗口创建了一个超文本链.这个例子中, 有:一个按钮,此按钮窗口能打开名为window2的窗口;一个链接,把文件doc2.html 装入最新打开的窗口;另一个按钮,此按钮关闭窗口.

    例2 第二窗口的anchor.在第二窗口内给anchor创建一个超文本链,这个链 接在窗口window2中显示文件doc2.html的名为number的anchor . Numbers 例3 frame的名称. 下例为frame内的anchor创建了一个超文本链.这个链在 名为contFrame中显示文件sesame.html中名为abs_method.这个frame必须放在 当前frameset中,且frame的名字要用标记的NAME属性定义. abs 例4 常frame的名称. 下例为文件创建了一个超文本链.这个链把文件artists.html 的内容显示在当前frameset的父窗口内,这个链对象(link object)出现在frameset的某个 frame中,当用户按动此链时, frameset中的所有frame都消失,artists.ftml的内容被装入 到父窗口内. Musician Descriptions 在窗口之间浏览(Navigating among windows) 可以同时打开很多Navigator窗口. 用户可以按动窗口,给此窗口focus,实现在 这些窗口之间浏览. 你可以用编程序的办法把focus给一个窗口内的对象,或者通过 指定此窗口作为超级文本链目标的办法.尽管你能改变第二窗口内对象的值,但并不 能激活第二窗口,当前窗口总是活动的. 活动窗口是拥有focus的窗口,一旦窗口拥有了focus,此窗口被放在最前面,能够 可见地被改变. 例如,此窗口的标题栏可以改变颜色. 视觉效果随你所用的平台而有所变化. 例1 把focus赋给另一个窗口的对象.下述语句可以把focus赋给窗口checkboxWin 内的文本对象city, 因为city获得了focus, checkboxWin也就得到了focus而成了活动 窗口.这个例子还包括了创建checkboxWin的语句. _ _checkboxWin=window.open("doc2.html") _... _checkboxWin.document.musicForm.city.focus() _ 例2 利用超文本链把focus赋给另一个窗口. 下面的句子指定window2作为超文 本链的目标,当用户按动此链时,focus转换到window2, 若window2不存在,则被创建. Load a file into window2


  • Copyright: NPACT BACKWARD FORWARD