在一个普通HTML文档载入浏览器的同时还创建了一个模型,这个模型始于一个window对象和它包含的文档。单框架窗口和文档很很简单,window下就是document。如果框架文档载入浏览器时就会建立一个稍微不同一样的层次模型。
<html><frameset cols="50%,50%"> <frameset name="leftFrame" src="js_06.html"></frameset> <frameset name="rightFrame" src="js_05.html"></frameset></frameset></html>
父窗口中包含两个或多个框架,就是说父窗口包含子框架对象的一个数组。可以通过数组语法或者框架名定位一个框架,框架名可以用<frame>
标记中的name
属性来进行设置。
[window.]frames[n].objFuncVarName[window.]frames["frameName"].objFuncVarName[window.]frameName.objFuncVarName
从子框架的角度来看,它的上一层称为parent(父层),因为从子框架到父层的元素的引用很简单parent.objFuncVarName
任何窗口或者框架都拥有parent属性,引用必须使用parent属性来跳出当前框架,并转到所有子框架的公有框架中,以上例子中的LeftFrame
到RightFrame
可以用parent,这样和父到子引用是一样的
parent.frames[n].objFuncVarName
获得载入框架的document
对象,由于浏览器的不同调用不同,IE4+和Safari使用与窗口相同,而MOzilla浏览器更严格遵循W3C DOM标准,使用comentDocument属性
var docObj;var frameObj=document.getElementById("myFrame");if(frameObj.contentDocument){ docObj=frameObj.contentDocument; }else{ docObj=frameObj.document; }
window.open()
方法返回window对象引用创建了一个新窗口并与它通信。
每个window对象都有一个opener的属性,该属性包含窗口和框架的引用,这些窗口或者框架存放一些脚本,脚本的window.open()
语句生成子窗口。
我们可以这样编程js_9.html
代码如下:
<html><head> <title>js_9</title> <script type="text/javascript"> function newSubWindows(){ window.open("js_10.html","sub","height=200,width200"); } </script></head><body><form><input type="button" name="" value="create clone" onclick="newSubWindows()"><p>there is Word from subwindows</p><input type="text" name=""></form></body></html>
js_10.html
代码如下
<html><head> <title>js_10</title> <script type="text/javascript"> </script></head><body><form> <input name="second" type="text" onchange=" opener.document.forms[0].entry.value=this.value"></form></body></html>
点击js_9
的create clone,会弹出一个新窗口,在新窗口js_10中输入字符,js_9的输入框会跟着做相应的变化
新闻热点
疑难解答