`
gk23
  • 浏览: 176430 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Frames : 一个特殊的Window类型

阅读更多

许多初学者在处理 frame 时往往会出现这样或那样的错误,其实,frame 是一个特殊的窗口类型,只要明白了他们之间的关系,可以很容易控制,本文摘译自 JavaScript 2.0-The Complete Reference 一书的英文第二版(仅摘录了对理解 frame 有直接关系的章节),文章详细介绍了 frame ,相信对新手理解 frame 会有很大帮助。


对 window 和 frame 关系的错误理解是web开发者中普遍存在的问题,从 (x) html 和 Javascript 来看,每个窗口中显示的 frame 都能很容易的控制,事实上,当一个 window 有多个 frame , 可以通过 window.frames[] 来实现对每个独立的窗口目标的引用,一些简单却很有用的属性在下表中列举出来:

Window 属性说明
frames[] 存放当前窗口中所有frame对象的数组。
length 窗口 frame 的数目,和 window.frames.length 等同。
name 当前窗口的名字,自 JavaScript 1.1 起,这个值是可读写的。
parent 对父窗口的引用。
self 对窗口自身的引用。
top 对最高级别窗口的引用,这个值通常和parent一致,除非 frame 中有更多的 frame。
window 另外一个对当前窗口的引用。



想用 Javascript 控制 frame 最主要的是要把各自的名字和他们之间的关系弄清楚,如果你有一个叫 frames.html 的页面,页面代码如下:

HTML:

  1.  
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
  3. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
  4. <html xmlns="http://www.w3.org/1999/xhtml">
  5. <head>
  6. <title>FrameSet Test</title>
  7. <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
  8. </head>
  9. <frameset rows="33%,*,33%">
  10. <frame src="framerelationship.html" name="frame1" id="frame1" />
  11. <frame src="moreframes.html" name="frame2" id="frame2" />
  12. <frame src="framerelationship.html" name="frame5" id="frame5" />
  13. </frameset>
  14. </html>
  15.  



在这种情况下,当前文档主体可以看作是三个 frame (frame1,frame2, and frame5) 的 parent ,你可以使用下面的方式取得 frame 数目:
Code:


window.frames.length



你如果在三个子 frame 中运行代码,可以用下面的方法 :
Code:


window.parent.frames.length


或者
Code:


parent.frames.length



parent 表示一个窗体的父窗体,也可以用 top 来表示最高级别的窗体,这样可以写成 top.frames.length ,但是需要注意的是:除非你有嵌套 frame ,否则 parent 和 top 通常表示的是一个对象。

访问一个 frame ,可以用 name 或者下标的方式查询 frames 数组,parent.frames[0].name 将会输出第一个 frame 的名字,在我们的例子中就是 frame1,同样,我们也可以用 parent.frame1 或者  parent.frames["frame1"] 来实现相同的操作,记住,一个 frame 就是一个 window,知道这个,就可以使用所有Window 和 Document 的方法。

当理解了 frame 之间的关系,可以很容易的通过 parent.frames[] 操作任何 frame ,假如你有一个简单的框架页面:
HTML:

  1.  
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
  3. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
  4. <html xmlns="http://www.w3.org/1999/xhtml">
  5. <head>
  6. <title>Two Frames</title>
  7. <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
  8. </head>
  9. <frameset cols="300,*">
  10. <frame src="navigation.html" name="frame1" id="frame1" />
  11. <frame src="content.html" name="frame2" id="frame2" />
  12. </frameset>
  13. </html>
  14.  



在 navigation 窗体里面,你可以通过下面的方式设置一个对 content 窗体引用的变量:
Code:


var contentFrame = parent.frames[1]; // 或者使用名称




iframe 是一个需要注意的 frame 变种,用iframe可以让你不使用框架,但是却可以嵌入页面,问题是,我们如何控制这些 iframe ?事实上,我们也可以用 frames[] 的方法,此外,如果你的 iframe 有命名,可以通过 getElementById 来操控,示例如下:
HTML:

  1.  
  2. <iframe src="http://www.google.com" name="iframe1" id="iframe1" height="200" width="200"></iframe>
  3. <form action="#" method="get">
  4. <input type="button" value="Load by Frames Array"
  5. onclick="frames['iframe1'].location='http://www.javascriptref.com';" />
  6. <input type="button" value="Load by DOM"
  7. onclick="document.getElementById('iframe1').src='http://www.pint.com';" />
  8. </form>
  9.  



可以通过在链接标签里面加上 target 来将操作指向目标 frame :
Code:


<a href="http://www.google.com" target="framename">Google</a>

 

分享到:
评论

相关推荐

    javascript实现网页子页面遍历回调的方法(涉及 window.frames、递归函数、函数上下文)

    `window.frames`属性是一个集合,它包含了当前窗口(包括子`iframe`)的所有窗口对象。这个属性可以帮助我们遍历所有嵌套的`iframe`。 首先,让我们了解核心方法`Frame_Each(CallBack)`,这是一个全局函数,用于...

    Popup-Closer:关闭所有以WindowType'popup'打开的窗口

    `WindowType`通常用于区分不同类型的窗口,比如'popup'就标识了一个弹出式窗口。 Popup-Closer的工作原理可能涉及到以下JavaScript知识点: 1. **事件监听**:Popup-Closer可能使用事件监听器来捕捉新窗口的打开。...

    javascript常用对象梳理

    每当浏览器打开一个窗口(无论该窗口是否有打开的网页),遇到`&lt;BODY&gt;`、`&lt;FRAMESET&gt;`或`&lt;FRAME&gt;`等元素时,就会自动创建`Window`对象的实例。此外,`Window`对象的实例也可通过`window.open()`方法手动创建。 由于...

    Window及相关顶级对象

    确认框使用`Window`对象的`confirm()`方法生成,该方法同样接收一个字符串作为参数,但会显示一个包含“确定”和“取消”两个按钮的弹窗。用户的选择将以布尔值的形式返回给调用者。“确定”按钮返回`true`,“取消...

    JavaScript_Quick_Reference.pdf

    ` 返回 `"object"`(注意:这是一个特殊情形,`null` 的 `typeof` 实际上返回 `"object"`)。 - **`toString()`** - 用途:将数字转换为字符串。 - 参数:接受一个基数作为参数,默认为十进制。 - 示例:`num....

    脚本化浏览器窗口

    - **window.onerror**: 一个事件处理器,当窗口中的JavaScript发生错误时被调用。 - **语法**: `window.onerror = function(message, url, lineNumber) { ... }` #### 14.8 编写与多窗口或帧交互的代码 - **...

    windows和document方法详解.doc

    `document`对象是`window`和`frames`对象的一个属性,它表示浏览器窗口或框架内显示的HTML文档。`document`对象提供了许多属性和方法来操作和访问文档的各个部分: 1. **属性**: - `alinkColor`: 活动链接的颜色...

    Javascript参考手册.doc

    **Window对象**是JavaScript中另一个极其重要的对象,它是所有顶级对象的容器。在Web开发中,我们经常需要与窗口进行交互,比如弹出新窗口、调整窗口大小或位置等。下面将详细介绍Window对象的属性和方法。 #### ...

    javascript浏览器兼容手册

    - **FF**: 使用 `window.frames["frameName"].contentWindow.document.elementName` 或 `window.frames["frameName"].document.elementName`。 15. **高度设置** - **IE**: 可以直接设置 `obj.style.height`。 ...

    Javascript常用对象.txt

    - `window.frames[]`:返回一个数组,包含了当前窗口中所有的`&lt;iframe&gt;`或`&lt;frame&gt;`元素。 - `window.length`:返回当前窗口中`&lt;iframe&gt;`或`&lt;frame&gt;`的数量。 - `window.self`:返回对`window`自身的引用。 - `...

    107个常用javascript语句

    19.窗口:打开窗口window.open(), 关闭一个窗口:window.close(), 窗口本身:self "fullscreen=no,channelmode=no,toolbar=no,location=no,menubar=no,scrollbas=no,resizable=no," 20.状態栏的设置:window.status=...

    Js函数大全.pdf

    这里是一个关于JavaScript函数大全的详细知识点总结: 1. 文档基础操作 - `document.write("")`: 在文档中直接写入内容。 - `document.getElementById("ID").value`: 通过ID获取页面元素,并设置其值。 2. DOM...

    JS语法字典.pdf

    本文档《JS语法字典.pdf》主要介绍和解释了JavaScript(简称JS)的基础语法知识。由于此文件内容广泛,我将逐项详细阐述。...通过本文档可以对JS有一个全面的了解,有助于前端开发人员快速上手并精通网页开发。

    js操作iframe的一些知识

    其中`window.frames`是一个数组,包含了页面中所有的Iframe窗口对象;而`contentWindow`属性则可以直接获取到Iframe内部的窗口对象。 ##### 3. 操作Iframe中的元素 获取了Iframe窗口对象后,就可以像操作普通页面...

    javascript学习笔记.docx

    - **变量声明**:未声明的变量尝试读取时会产生错误,而写入未声明的变量会创建一个全局变量。 - **比较运算符**:“===”表示全等,null和undefined全等,但两者之间不全等。“==”会进行类型转换,null和...

    js 实现iframe 之间传值

    在网页开发中,`iframe`(Inline Frame)是一种嵌入式框架,用于在单个HTML文档中嵌入另一个HTML文档。这种技术常用于加载外部页面、实现页面分块或者在不刷新整个页面的情况下更新部分内容。然而,由于`iframe`本质...

    javascript语法

    根据给定的信息,我们可以从多个方面来探讨JavaScript的相关知识点,主要涵盖Window对象、Document对象、Location对象、Navigator对象以及常用的数据类型操作等。 ### Window 对象 #### 基本属性 - `closed`: 用于...

    JavaScript[对象.属性]集锦、事件查询综合

    - **概述**: 每个HTML文档都有一个顶层的`window`对象,它代表浏览器窗口。 - **属性**: - `frames[]`: 子框架数组,按源文档中定义的顺序存放。 - `frames.length`: 子框架的数量。 - `self`: 当前窗口的引用。 ...

    js常用操作

    `:此方法用于打开一个模态对话框,其中 `dialogURL` 表示对话框的 URL,`arguments` 表示传递给对话框的数据,`options` 表示对话框的显示选项。 4. **关闭窗口**: - `window.close();`:此方法用于关闭当前...

    JavaScript[对象-属性]集锦

    - **frames**: 一个数组,包含当前窗口中所有的框架或内嵌文档。 - **length**: frames数组的长度,表示当前窗口中框架的数量。 - **self**: 引用当前窗口本身。 - **parent**: 引用父窗口,即包含当前窗口的窗口。 ...

Global site tag (gtag.js) - Google Analytics