`

javascript学习随笔(使用window和frame)的技巧

阅读更多
JavaScript允许创建和打开代表HTML文本, form对象和frame的窗口. window对象是JavaScript客户层次结构的最顶层对象, form元素和全部JavaScript代码都是存在于文档中,而文档被装载进窗口. 为了理解窗口怎样工作,你可以控制操作这些窗口.
打开和关闭窗口
当用户启动(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文档中使用<frameSET>标记就可以创建一个frame. <frameSET>标记在HTML文档中的唯一作用就是定义组成页的各个frame的布局(layout).
例1 下述语名定义了上图所示的一组frame
<FRAMESSET ROWS ="90%,10%">
 <FRAMESET COLS="30%,70%">
   <FRAME SRC=category.html NAME="listFrame">
ALT="BACKWARD" HEIGHT=32 WIDTH=32>    <FRAME SRC=titles.html NAME="contentFrame>
ALT="BACKWARD" HEIGHT=32 WIDTH=32>  </FRAMESET>
 <FRAME SRC =navigate.html NAME="navigateFrame">
</FRAMESET>
下图给出了这些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定义如下:
<FRAMESSET ROWS ="90%,10%">
  <FRAME SRC=muske13.htm NAME="upperFrame">
ALT="BACKWARD" HEIGHT=32 WIDTH=32>   <FRAME SRC=navigate.html NAME="navigateFrame>
ALT="BACKWARD" HEIGHT=32 WIDTH=32> </FRAMESET>
文件muskel3.html包含了上述frame的骨架,并定义了下述frameset.
<FRAMESSET COLS ="30%,70%">
  <FRAME SRC=categroy.html NAME="listFrame">
ALT="BACKWARD" HEIGHT=32 WIDTH=32>   <FRAME SRC=titles.html NAME="contentFrame>
ALT="BACKWARD" HEIGHT=32 WIDTH=32> </FRAMESET>
下图说明了这几个frame的层次关系upperFrame和navigateFrame共享一个父辈:最顶的window. 而listFrame和contentFrame共享一个父辈:upperFrame.
top
| +--listFrame
| | (category.html)
+---upperFrame-----------|
| (muske13.html) |
| +--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 中加入如下按钮.
<INPUT TYPE="button" VALUE="Titles Only"
onClick="top.frames[0].location='artists.html'">
当用户按动此按钮时,文件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 (按分类排序)包含的代码类似于下述:
<B>Music Club Artists</B>
<P><B>Jazz</B>
<LI><A HREF=titles.html#0001 TARGET="contentFrame">Toshiko Akiyoshi</A>
<LI><A HREF=titles.html#0006 TARGET="contentFrame">Jon Coltrane</A>
<LI><A HREF=titles.html#0007 TARGET="contentFrame">Miles Davis</A>
<LI><A HREF=titles.html#0010 TARGET="contentFrame">Dexter Gordon</A>
<P><B>Soul</B>
<LI><A HREF=titles.html#0003 TARGET="contentFrame">Betty Cater</A>
<LI><A HREF=titles.html#0004 TARGET="contentFrame">Ray Charles</A>
...
文件 alphabet.html (按字母排序) 包含的代码类似于下述:
<B>Music Club Artists</B>
<LI><A HREF=titles.html#0001 TARGET="contentFrame">Toshiko Akiyoshi</A>
<LI><A HREF=titles.html#0002 TARGET="contentFrame">The Beatles</A>
<LI><A HREF=titles.html#0003 TARGET="contentFrame">Betty Carter</A>
<LI><A HREF=titles.html#0004 TARGET="contentFrame">Ray Charles</A>
......
文件 navigate.html(在屏幕底部的导航链)包含的代码类似下面. 注意: artists.html的目标是"_parent". 当用户按动此链时,整个窗口被重写,因为最上层窗口是navigateFrame的父辈.
<A HREF=alphabet.html TARGET="listFrame"><B>Alphabetical</B></A>
   
<A HREF=category.html TARGET="listFrame"><B>By category</B></A>
   
<A HREF=artists.html TARGET="_parent">
<B>Musician Descriptopns</B></A>
文件titles.html(主文件,显示在右边的框架中)包括的代码大致如下:
<!------------------------------------------------------------------>
<A NAME="0001"><H3>Toshiko Akiyoshi</H3></A>
<P>Interlude
<!------------------------------------------------------------------>
<A NAME="0002"><H3>The Beatles</H3></A>
<P>Please Please Me
<!------------------------------------------------------------------>
<A NAME="0003"><H3>Betty Carter</H3></A>
<P>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>标记中指明. <FRAMESET>能产生frameset.
window2.frame2.document.bgColor="violet"
在form提交或超文本链中引用一个窗口
当把一个窗口用作form提交或超文本链的对象时(作为<FORM>或<A>标记的TARGET属性), 要使用窗口名,而不能用窗口变量. 这个窗口将是链被装载进的窗口,或者对于form来说,是显示服务器响应的窗口.
例1 第二窗口. 下面的例子给第二窗口创建了一个超文本链.这个例子中,有:一个按钮,此按钮窗口能打开名为window2的窗口;一个链接,把文件doc2.html装入最新打开的窗口;另一个按钮,此按钮关闭窗口.
<P>
<INPUT TYPE="button" VALUE="Open window2"
onClick="msgWindow=window.open('','resizable=no,width=200,height=200')"
<P>
<INPUT TYPE ="button" VALUE="Close window2"
onClick="msgWindow.close()">
例2 第二窗口的anchor.在第二窗口内给anchor创建一个超文本链,这个链接在窗口window2中显示文件doc2.html的名为number的anchor .
<A HREF=doc2.html#numbers TARGET="window2">Numbers</A>
例3 frame的名称. 下例为frame内的anchor创建了一个超文本链.这个链在名为contFrame中显示文件sesame.html中名为abs_method.这个frame必须放在当前frameset中,且frame的名字要用<FRAMESET>标记的NAME属性定义.
<A HREF=sesame.html#abs_method TARGET="contentFrame">abs</A>
例4 常frame的名称. 下例为文件创建了一个超文本链.这个链把文件artists.html的内容显示在当前frameset的父窗口内,这个链对象(link object)出现在frameset的某个frame中,当用户按动此链时, frameset中的所有frame都消失,artists.ftml的内容被装入到父窗口内.
<A HREF="artists.html" TARGET="_parent">
<B>Musician Descriptions</B></A>

--------------------------------------------------------------------------------

在窗口之间浏览(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不存在,则被创建.
<A HREF="doc2.html" TARGET="window2"> Load a file into window2</A>

本文来自: 脚本之家(www.jb51.net) 详细出处参考:http://www.jb51.net/article/8003.htm
分享到:
评论

相关推荐

    JavaScript bom操作 window-event 示例代码

    JavaScript bom操作 window_event 示例代码JavaScript bom操作 window_event 示例代码JavaScript bom操作 window_event 示例代码JavaScript bom操作 window_event 示例代码JavaScript bom操作 window_event 示例代码...

    JavaScript bom操作 window对象的方法 示例代码

    JavaScript bom操作 window对象的方法 示例代码JavaScript bom操作 window对象的方法 示例代码JavaScript bom操作 window对象的方法 示例代码JavaScript bom操作 window对象的方法 示例代码JavaScript bom操作 ...

    JavaScript学习指南 高清 PDF

    2. **对象与原型链**:JavaScript是基于对象的语言,它使用对象来存储数据和功能。原型链是JavaScript实现继承的一种方式,通过__proto__属性或Object.getPrototypeOf方法可以访问对象的原型。 3. **作用域与闭包**...

    JavaScript BOM操作 window对象的子级对象 示例代码

    JavaScript BOM操作 window对象的子级对象 示例代码JavaScript BOM操作 window对象的子级对象 示例代码JavaScript BOM操作 window对象的子级对象 示例代码JavaScript BOM操作 window对象的子级对象 示例代码...

    javascript 打开页面window.location和window.open的区别.docx

    在JavaScript中,`window.location` 和 `window.open` 都是用来控制浏览器导航的重要API,但它们在使用场景、功能特性和行为上有显著的不同。了解这些差异对于合理地利用这两种方法至关重要。 #### 二、window....

    javascript完全学习手册1 源码

    13.4 JavaScript调试技巧 381 13.4.1 使用alert()语句 382 13.4.2 使用write()语句 382 13.4.3 抛出自定义异常消息 383 第4篇 JavaScript特效应用 第14章 JavaScript网页特效 387 14.1 文字特效 387 14.1.1 文字...

    javascript技巧

    ### JavaScript技巧详解 #### 一、`document.write("")` ...以上内容涵盖了 JavaScript 中常用的一些技巧和技术点,这些知识点对于前端开发来说非常重要,熟练掌握它们可以帮助开发者更高效地进行 Web 应用的开发。

    JavaScript小技巧全集 JavaScript教程 JavaScript源代码集

    JavaScript,作为全球最广泛使用的脚本语言之一,是构建网页动态功能和交互效果的基础。这个“JavaScript小技巧全集”提供了丰富的教程和源代码,旨在帮助开发者深入理解和掌握JavaScript的各种实用技巧。 首先,...

    重写javascript中window.confirm的行为

    javascript中window.confirm这个方法很好用,可以弹出一个确认对话框我们之所以弹出这个对话框,可能就是因为该操作很危险,所以要用户确认。但如果默认选择”确定”,则可能违背了这个原则。 另外,confirm对话框的...

    JavaScript Window窗口对象属性和使用方法

    Window对象可以处理框架和框架之间的关系,通过这种关系在一个框架中处理另一个框架中的文档。他也是所有对象的顶级对象,通过Window对象的子对象进行操作,可以实现更多的效果。 1、Window对象属性 每个对象都有...

    深入解析:JavaScript中的`window.scrollX`与`window.pageYOffset`

    JavaScript提供了几种方法来获取当前滚动位置,其中window.scrollX和window.pageYOffset是两个常用的属性。本文将详细探讨这两个属性的区别、它们的用途以及如何在实际开发中正确使用它们。 window.scrollX 和 ...

    IFrame AND window对象

    在Web开发中,`IFrame`(Inline Frame)和`window`对象是两个非常重要的概念,它们在构建复杂的网页布局和交互中起着关键作用。`IFrame`允许我们在一个HTML文档中嵌入另一个HTML文档,而`window`对象则是浏览器提供...

    JavaScript使用技巧精萃

    JavaScript使用技巧精萃涵盖了许多在开发过程中常用的JavaScript技术,这些技巧可以帮助开发者提高代码效率和用户体验。以下是基于提供的部分内容对各个知识点的详细说明: (一) 确认删除用法: 在网页中进行删除...

    JavaScript_window.setTimeout()_的详细用法

    `window.setTimeout()`和`window.setInterval()`是JavaScript中非常实用的两个API,它们可以用来实现各种基于时间的功能,如定时任务、倒计时等。正确理解和使用这两个API,可以帮助开发者更好地控制程序的执行流程...

    javascript经典特效---分割Frame的代码.rar

    JavaScript是一种广泛应用于网页和网络应用开发的脚本语言,它主要负责处理客户端的交互和动态效果。在网页设计中,"分割Frame"通常指的是利用HTML的Frameset元素创建多窗口布局,将一个网页分割成多个独立显示的...

    JavaScript学习笔记

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。 - **JSON对象表示法:** JSON格式使用`{}`来表示一个对象,属性由键值对组成,其中键名必须为...

    JavaScript最常用的55个经典技巧

    JavaScript是一种广泛应用于网页和网络应用的编程语言,它在网页交互、动态效果和用户界面设计等方面发挥着重要作用。...不断学习和实践,提升自己的JavaScript技能,是每个前端开发者不可或缺的部分。

    javascript方法和技巧.doc

    以下是一些JavaScript的方法和技巧,可以帮助你提升网页的用户体验和安全性。 1. `oncontextmenu` 事件:通过设置`oncontextmenu="window.event.returnValue=false"`,可以阻止用户在网页元素上右击显示上下文菜单...

    JavaScript实用技巧集锦

    JavaScript 实用技巧集锦 本文总结了 16 个 JavaScript 实用技巧,涵盖了防止用户操作、美化网页、获取控件位置、判断来源等多方面的内容。 1. 屏蔽鼠标右键 通过 在表格中添加 oncontextmenu="window.event....

    PHP、MySQL与JavaScript学习手册 第4版

    PHP、MySQL与JavaScript学习手册 第4版.pdf

Global site tag (gtag.js) - Google Analytics