JavaScript iframe的相互操作浅析_javascript技巧
iframe元素也就是文档中的文档,或者好像浮动的框架(frame)。关于iframe的操作一直是一个疑难点,网上有很多这方面的文章介绍。下面我结合自己的经验,整理一下笔记记录下来。
一、页面
三个页面:父页面和两个子页面,两个子页面在父页面的两个iframe里。
1、父页面MainForm.aspx
<CODE jQuery1255503204984="2"><SPAN class=pun><%</SPAN><SPAN class=pln>@ </SPAN><SPAN class=typ>Page</SPAN><SPAN class=pln> </SPAN><SPAN class=typ>Language</SPAN><SPAN class=pun>=</SPAN><SPAN class=str>"C#"</SPAN><SPAN class=pln> </SPAN><SPAN class=typ>AutoEventWireup</SPAN><SPAN class=pun>=</SPAN><SPAN class=str>"true"</SPAN><SPAN class=pln> </SPAN><SPAN class=typ>CodeBehind</SPAN><SPAN class=pun>=</SPAN><SPAN class=str>"MainForm.aspx.cs"</SPAN><SPAN class=pln> </SPAN><SPAN class=typ>Inherits</SPAN><SPAN class=pun>=</SPAN><SPAN class=str>"Test.MainForm"</SPAN><SPAN class=pln> </SPAN><SPAN class=pun>%></SPAN><SPAN class=pln><br><br></SPAN><SPAN class=dec><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"></SPAN><SPAN class=pln><BR></SPAN><SPAN class=pun><</SPAN><SPAN class=tag>html</SPAN><SPAN class=pln> </SPAN><SPAN class=atn>xmlns</SPAN><SPAN class=pun>=</SPAN><SPAN class=atv>"http://www.w3.org/1999/xhtml"</SPAN><SPAN class=pun>></SPAN><SPAN class=pln><BR></SPAN><SPAN class=pun><</SPAN><SPAN class=tag>head</SPAN><SPAN class=pln> </SPAN><SPAN class=atn>runat</SPAN><SPAN class=pun>=</SPAN><SPAN class=atv>"server"</SPAN><SPAN class=pun>></SPAN><SPAN class=pln><BR> </SPAN><SPAN class=pun><</SPAN><SPAN class=tag>title</SPAN><SPAN class=pun>></</SPAN><SPAN class=tag>title</SPAN><SPAN class=pun>></SPAN><SPAN class=pln><BR></SPAN><SPAN class=pun></</SPAN><SPAN class=tag>head</SPAN><SPAN class=pun>></SPAN><SPAN class=pln><BR></SPAN><SPAN class=pun><</SPAN><SPAN class=tag>body</SPAN><SPAN class=pun>></SPAN><SPAN class=pln><BR> </SPAN><SPAN class=pun><</SPAN><SPAN class=tag>form</SPAN><SPAN class=pln> </SPAN><SPAN class=atn>id</SPAN><SPAN class=pun>=</SPAN><SPAN class=atv>"form1"</SPAN><SPAN class=pln> </SPAN><SPAN class=atn>runat</SPAN><SPAN class=pun>=</SPAN><SPAN class=atv>"server"</SPAN><SPAN class=pun>></SPAN><SPAN class=pln><BR> </SPAN><SPAN class=pun><</SPAN><SPAN class=tag>div</SPAN><SPAN class=pun>></SPAN><SPAN class=pln><BR> </SPAN><SPAN class=pun><</SPAN><SPAN class=tag>ul</SPAN><SPAN class=pun>></SPAN><SPAN class=pln><BR> </SPAN><SPAN class=pun><</SPAN><SPAN class=tag>li</SPAN><SPAN class=pun>></SPAN><SPAN class=pln><BR> 父页面(文本失去焦点可看结果):</SPAN><SPAN class=pun><</SPAN><SPAN class=tag>input</SPAN><SPAN class=pln> </SPAN><SPAN class=atn>id</SPAN><SPAN class=pun>=</SPAN><SPAN class=atv>"txtParent"</SPAN><SPAN class=pln> </SPAN><SPAN class=atn>name</SPAN><SPAN class=pun>=</SPAN><SPAN class=atv>"txtParent"</SPAN><SPAN class=pln> </SPAN><SPAN class=atn>type</SPAN><SPAN class=pun>=</SPAN><SPAN class=atv>"text"</SPAN><SPAN class=pln> </SPAN><SPAN class=atn>value</SPAN><SPAN class=pun>=</SPAN><SPAN class=atv>"parent"</SPAN><SPAN class=pln> </SPAN><SPAN class=atn>onblur</SPAN><SPAN class=pun>=</SPAN><SPAN class=atv>"</SPAN><SPAN class=str>iframeTest()</SPAN><SPAN class=atv>"</SPAN><SPAN class=pln> </SPAN><SPAN class=pun>/></SPAN><SPAN class=pln><BR> </SPAN><SPAN class=pun></</SPAN><SPAN class=tag>li</SPAN><SPAN class=pun>></SPAN><SPAN class=pln><BR> </SPAN><SPAN class=pun><</SPAN><SPAN class=tag>li</SPAN><SPAN class=pun>></SPAN><SPAN class=pln><BR> </SPAN><SPAN class=pun><</SPAN><SPAN class=tag>iframe</SPAN><SPAN class=pln> </SPAN><SPAN class=atn>src</SPAN><SPAN class=pun>=</SPAN><SPAN class=atv>"FrameA.aspx"</SPAN><SPAN class=pln> </SPAN><SPAN class=atn>id</SPAN><SPAN class=pun>=</SPAN><SPAN class=atv>"iframeA"</SPAN><SPAN class=pun>></</SPAN><SPAN class=tag>iframe</SPAN><SPAN class=pun>></SPAN><SPAN class=pln><BR> </SPAN><SPAN class=pun></</SPAN><SPAN class=tag>li</SPAN><SPAN class=pun>></SPAN><SPAN class=pln><BR> </SPAN><SPAN class=pun><</SPAN><SPAN class=tag>li</SPAN><SPAN class=pun>></SPAN><SPAN class=pln><BR> </SPAN><SPAN class=pun><</SPAN><SPAN class=tag>iframe</SPAN><SPAN class=pln> </SPAN><SPAN class=atn>src</SPAN><SPAN class=pun>=</SPAN><SPAN class=atv>"FrameB.aspx"</SPAN><SPAN class=pln> </SPAN><SPAN class=atn>id</SPAN><SPAN class=pun>=</SPAN><SPAN class=atv>"iframeB"</SPAN><SPAN class=pun>></</SPAN><SPAN class=tag>iframe</SPAN><SPAN class=pun>></SPAN><SPAN class=pln><BR> </SPAN><SPAN class=pun></</SPAN><SPAN class=tag>li</SPAN><SPAN class=pun>></SPAN><SPAN class=pln><BR> </SPAN><SPAN class=pun></</SPAN><SPAN class=tag>ul</SPAN><SPAN class=pun>></SPAN><SPAN class=pln><BR> </SPAN><SPAN class=pun></</SPAN><SPAN class=tag>div</SPAN><SPAN class=pun>></SPAN><SPAN class=pln><br><br> </SPAN><SPAN class=pun><</SPAN><SPAN class=tag>script</SPAN><SPAN class=pln> </SPAN><SPAN class=atn>type</SPAN><SPAN class=pun>=</SPAN><SPAN class=atv>"text/</SPAN><STRONG><SPAN class=atv><FONT color=#810081>javascript</FONT></SPAN></STRONG><SPAN class=atv>"</SPAN><SPAN class=pun>></SPAN><SPAN class=pln><br><br> </SPAN><SPAN class=kwd>function</SPAN><SPAN class=pln> iframeTest</SPAN><SPAN class=pun>()</SPAN><SPAN class=pln> </SPAN><SPAN class=pun>{</SPAN><SPAN class=pln><br><br> </SPAN><SPAN class=pun>}</SPAN><SPAN class=pln><br><br> </SPAN><SPAN class=pun></</SPAN><SPAN class=tag>script</SPAN><SPAN class=pun>></SPAN><SPAN class=pln><br><br> </SPAN><SPAN class=pun></</SPAN><SPAN class=tag>form</SPAN><SPAN class=pun>></SPAN><SPAN class=pln><BR></SPAN><SPAN class=pun></</SPAN><SPAN class=tag>body</SPAN><SPAN class=pun>></SPAN><SPAN class=pln><BR></SPAN><SPAN class=pun></</SPAN><SPAN class=tag>html</SPAN><SPAN class=pun>></SPAN></CODE>
2、子页面A
<CODE jQuery1255503204984="3"><SPAN class=pun><%</SPAN><SPAN class=pln>@ </SPAN><SPAN class=typ>Page</SPAN><SPAN class=pln> </SPAN><SPAN class=typ>Language</SPAN><SPAN class=pun>=</SPAN><SPAN class=str>"C#"</SPAN><SPAN class=pln> </SPAN><SPAN class=typ>AutoEventWireup</SPAN><SPAN class=pun>=</SPAN><SPAN class=str>"true"</SPAN><SPAN class=pln> </SPAN><SPAN class=typ>CodeBehind</SPAN><SPAN class=pun>=</SPAN><SPAN class=str>"FrameA.aspx.cs"</SPAN><SPAN class=pln> </SPAN><SPAN class=typ>Inherits</SPAN><SPAN class=pun>=</SPAN><SPAN class=str>"Test.FrameA"</SPAN><SPAN class=pln> </SPAN><SPAN class=pun>%></SPAN><SPAN class=pln><br><br></SPAN><SPAN class=dec><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"></SPAN><SPAN class=pln><BR></SPAN><SPAN class=pun><</SPAN><SPAN class=tag>html</SPAN><SPAN class=pln> </SPAN><SPAN class=atn>xmlns</SPAN><SPAN class=pun>=</SPAN><SPAN class=atv>"http://www.w3.org/1999/xhtml"</SPAN><SPAN class=pun>></SPAN><SPAN class=pln><BR></SPAN><SPAN class=pun><</SPAN><SPAN class=tag>head</SPAN><SPAN class=pln> </SPAN><SPAN class=atn>runat</SPAN><SPAN class=pun>=</SPAN><SPAN class=atv>"server"</SPAN><SPAN class=pun>></SPAN><SPAN class=pln><BR> </SPAN><SPAN class=pun><</SPAN><SPAN class=tag>title</SPAN><SPAN class=pun>></</SPAN><SPAN class=tag>title</SPAN><SPAN class=pun>></SPAN><SPAN class=pln><br><br> </SPAN><SPAN class=pun><</SPAN><SPAN class=tag>script</SPAN><SPAN class=pln> </SPAN><SPAN class=atn>type</SPAN><SPAN class=pun>=</SPAN><SPAN class=atv>"text/javascript"</SPAN><SPAN class=pun>></SPAN><SPAN class=pln><br><br> </SPAN><SPAN class=com>//子页面与父页面之间的操作 </SPAN><SPAN class=pln><BR> </SPAN><SPAN class=kwd>function</SPAN><SPAN class=pln> getParent</SPAN><SPAN class=pun>()</SPAN><SPAN class=pln> </SPAN><SPAN class=pun>{</SPAN><SPAN class=pln><br><br> </SPAN><SPAN class=pun>}</SPAN><SPAN class=pln><br><br> </SPAN><SPAN class=com>//当前子页面与另外一个子页面之间的操作</SPAN><SPAN class=pln><BR> </SPAN><SPAN class=kwd>function</SPAN><SPAN class=pln> getAnotherChild</SPAN><SPAN class=pun>()</SPAN><SPAN class=pln> </SPAN><SPAN class=pun>{</SPAN><SPAN class=pln><br><br> </SPAN><SPAN class=pun>}</SPAN><SPAN class=pln><BR> </SPAN><SPAN class=pun></</SPAN><SPAN class=tag>script</SPAN><SPAN class=pun>></SPAN><SPAN class=pln><br><br></SPAN><SPAN class=pun></</SPAN><SPAN class=tag>head</SPAN><SPAN class=pun>></SPAN><SPAN class=pln><BR></SPAN><SPAN class=pun><</SPAN><SPAN class=tag>body</SPAN><SPAN class=pun>></SPAN><SPAN class=pln><BR> </SPAN><SPAN class=pun><</SPAN><SPAN class=tag>form</SPAN><SPAN class=pln> </SPAN><SPAN class=atn>id</SPAN><SPAN class=pun>=</SPAN><SPAN class=atv>"form1"</SPAN><SPAN class=pln> </SPAN><SPAN class=atn>runat</SPAN><SPAN class=pun>=</SPAN><SPAN class=atv>"server"</SPAN><SPAN class=pun>></SPAN><SPAN class=pln><BR> </SPAN><SPAN class=pun><</SPAN><SPAN class=tag>div</SPAN><SPAN class=pun>></SPAN><SPAN class=pln><BR> 子页面1(文本失去焦点可看结果):</SPAN><SPAN class=pun><</SPAN><SPAN class=tag>input</SPAN><SPAN class=pln> </SPAN><SPAN class=atn>id</SPAN><SPAN class=pun>=</SPAN><SPAN class=atv>"txtUserName"</SPAN><SPAN class=pln> </SPAN><SPAN class=atn>name</SPAN><SPAN class=pun>=</SPAN><SPAN class=atv>"txtUserName"</SPAN><SPAN class=pln> </SPAN><SPAN class=atn>type</SPAN><SPAN class=pun>=</SPAN><SPAN class=atv>"text"</SPAN><SPAN class=pln> </SPAN><SPAN class=atn>value</SPAN><SPAN class=pun>=</SPAN><SPAN class=atv>"jeff wong"</SPAN><SPAN class=pln> </SPAN><SPAN class=atn>onblur</SPAN><SPAN class=pun>=</SPAN><SPAN class=atv>"</SPAN><SPAN class=str>getParent()</SPAN><SPAN class=atv>"</SPAN><SPAN class=pln> </SPAN><SPAN class=pun>/></SPAN><SPAN class=pln><BR> </SPAN><SPAN class=pun></</SPAN><SPAN class=tag>div</SPAN><SPAN class=pun>></SPAN><SPAN class=pln><BR> </SPAN><SPAN class=pun></</SPAN><SPAN class=tag>form</SPAN><SPAN class=pun>></SPAN><SPAN class=pln><BR></SPAN><SPAN class=pun></</SPAN><SPAN class=tag>body</SPAN><SPAN class=pun>></SPAN><SPAN class=pln><BR></SPAN><SPAN class=pun></</SPAN><SPAN class=tag>html</SPAN><SPAN class=pun>></SPAN><SPAN class=pln><BR></SPAN></CODE>
3、子页面B
<CODE jQuery1255503204984="4"><SPAN class=pun><%</SPAN><SPAN class=pln>@ </SPAN><SPAN class=typ>Page</SPAN><SPAN class=pln> </SPAN><SPAN class=typ>Language</SPAN><SPAN class=pun>=</SPAN><SPAN class=str>"C#"</SPAN><SPAN class=pln> </SPAN><SPAN class=typ>AutoEventWireup</SPAN><SPAN class=pun>=</SPAN><SPAN class=str>"true"</SPAN><SPAN class=pln> </SPAN><SPAN class=typ>CodeBehind</SPAN><SPAN class=pun>=</SPAN><SPAN class=str>"FrameB.aspx.cs"</SPAN><SPAN class=pln> </SPAN><SPAN class=typ>Inherits</SPAN><SPAN class=pun>=</SPAN><SPAN class=str>"Test.FrameB"</SPAN><SPAN class=pln> </SPAN><SPAN class=pun>%></SPAN><SPAN class=pln><br><br></SPAN><SPAN class=dec><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"></SPAN><SPAN class=pln><br><br></SPAN><SPAN class=pun><</SPAN><SPAN class=tag>html</SPAN><SPAN class=pln> </SPAN><SPAN class=atn>xmlns</SPAN><SPAN class=pun>=</SPAN><SPAN class=atv>"http://www.w3.org/1999/xhtml"</SPAN><SPAN class=pln> </SPAN><SPAN class=pun>></SPAN><SPAN class=pln><BR></SPAN><SPAN class=pun><</SPAN><SPAN class=tag>head</SPAN><SPAN class=pln> </SPAN><SPAN class=atn>runat</SPAN><SPAN class=pun>=</SPAN><SPAN class=atv>"server"</SPAN><SPAN class=pun>></SPAN><SPAN class=pln><BR> </SPAN><SPAN class=pun><</SPAN><SPAN class=tag>title</SPAN><SPAN class=pun>></</SPAN><SPAN class=tag>title</SPAN><SPAN class=pun>></SPAN><SPAN class=pln><BR></SPAN><SPAN class=pun></</SPAN><SPAN class=tag>head</SPAN><SPAN class=pun>></SPAN><SPAN class=pln><BR></SPAN><SPAN class=pun><</SPAN><SPAN class=tag>body</SPAN><SPAN class=pun>></SPAN><SPAN class=pln><BR> </SPAN><SPAN class=pun><</SPAN><SPAN class=tag>form</SPAN><SPAN class=pln> </SPAN><SPAN class=atn>id</SPAN><SPAN class=pun>=</SPAN><SPAN class=atv>"form1"</SPAN><SPAN class=pln> </SPAN><SPAN class=atn>runat</SPAN><SPAN class=pun>=</SPAN><SPAN class=atv>"server"</SPAN><SPAN class=pun>></SPAN><SPAN class=pln><BR> </SPAN><SPAN class=pun><</SPAN><SPAN class=tag>div</SPAN><SPAN class=pun>></SPAN><SPAN class=pln><BR> 子页面2(文本失去焦点可看结果):</SPAN><SPAN class=pun><</SPAN><SPAN class=tag>input</SPAN><SPAN class=pln> </SPAN><SPAN class=atn>id</SPAN><SPAN class=pun>=</SPAN><SPAN class=atv>"txtUserNameB"</SPAN><SPAN class=pln> </SPAN><SPAN class=atn>name</SPAN><SPAN class=pun>=</SPAN><SPAN class=atv>"txtUserNameB"</SPAN><SPAN class=pln> </SPAN><SPAN class=atn>type</SPAN><SPAN class=pun>=</SPAN><SPAN class=atv>"text"</SPAN><SPAN class=pln> </SPAN><SPAN class=atn>value</SPAN><SPAN class=pun>=</SPAN><SPAN class=atv>"jeffery zhao"</SPAN><SPAN class=pun>/></SPAN><SPAN class=pln><BR> </SPAN><SPAN class=pun></</SPAN><SPAN class=tag>div</SPAN><SPAN class=pun>></SPAN><SPAN class=pln><BR> </SPAN><SPAN class=pun></</SPAN><SPAN class=tag>form</SPAN><SPAN class=pun>></SPAN><SPAN class=pln><BR></SPAN><SPAN class=pun></</SPAN><SPAN class=tag>body</SPAN><SPAN class=pun>></SPAN><SPAN class=pln><BR></SPAN><SPAN class=pun></</SPAN><SPAN class=tag>html</SPAN><SPAN class=pun>></SPAN></CODE>
二、操作
1、父页面操作子页面
这个毫无疑问要在父页面MainForm.aspx文件里实现。我们修改父页面的javascript函数iframeTest,看父页面如何获取和操作子页面元素的:
<CODE jQuery1255503204984="5"><SPAN class=pln> </SPAN><SPAN class=kwd>function</SPAN><SPAN class=pln> iframeTest</SPAN><SPAN class=pun>()</SPAN><SPAN class=pln> </SPAN><SPAN class=pun>{</SPAN><SPAN class=pln><BR> </SPAN><SPAN class=kwd>var</SPAN><SPAN class=pln> frame1 </SPAN><SPAN class=pun>=</SPAN><SPAN class=pln> document</SPAN><SPAN class=pun>.</SPAN><SPAN class=pln>getElementById</SPAN><SPAN class=pun>(</SPAN><SPAN class=str>"iframeA"</SPAN><SPAN class=pun>);</SPAN><SPAN class=pln><BR> </SPAN><SPAN class=kwd>var</SPAN><SPAN class=pln> frame2 </SPAN><SPAN class=pun>=</SPAN><SPAN class=pln> document</SPAN><SPAN class=pun>.</SPAN><SPAN class=pln>getElementById</SPAN><SPAN class=pun>(</SPAN><SPAN class=str>"iframeB"</SPAN><SPAN class=pun>);</SPAN><SPAN class=pln><br><br> </SPAN><SPAN class=kwd>var</SPAN><SPAN class=pln> frameA </SPAN><SPAN class=pun>=</SPAN><SPAN class=pln> document</SPAN><SPAN class=pun>.</SPAN><SPAN class=pln>frames</SPAN><SPAN class=pun>[</SPAN><SPAN class=str>"iframeA"</SPAN><SPAN class=pun>];</SPAN><SPAN class=pln> </SPAN><SPAN class=com>//等价于 var frameAa = document.frames.iframeA;</SPAN><SPAN class=pln><BR> </SPAN><SPAN class=kwd>var</SPAN><SPAN class=pln> frameB </SPAN><SPAN class=pun>=</SPAN><SPAN class=pln> document</SPAN><SPAN class=pun>.</SPAN><SPAN class=pln>frames</SPAN><SPAN class=pun>[</SPAN><SPAN class=str>"iframeB"</SPAN><SPAN class=pun>];</SPAN><SPAN class=pln> </SPAN><SPAN class=com>//等价于 var frameBb = document.frames.iframeB;</SPAN><SPAN class=pln><br><br> </SPAN><SPAN class=com>//**********************************************</SPAN><SPAN class=pln><BR> alert</SPAN><SPAN class=pun>(</SPAN><SPAN class=pln>frame1 </SPAN><SPAN class=pun>==</SPAN><SPAN class=pln> frameA</SPAN><SPAN class=pun>);</SPAN><SPAN class=pln> </SPAN><SPAN class=com>//false</SPAN><SPAN class=pln><BR> alert</SPAN><SPAN class=pun>(</SPAN><SPAN class=pln>frame2 </SPAN><SPAN class=pun>==</SPAN><SPAN class=pln> frameB</SPAN><SPAN class=pun>);</SPAN><SPAN class=pln> </SPAN><SPAN class=com>//false</SPAN><SPAN class=pln><br><br> alert</SPAN><SPAN class=pun>(</SPAN><SPAN class=pln>frame1</SPAN><SPAN class=pun>.</SPAN><SPAN class=pln>src</SPAN><SPAN class=pun>);</SPAN><SPAN class=pln> </SPAN><SPAN class=com>//FrameA.aspx</SPAN><SPAN class=pln><BR> alert</SPAN><SPAN class=pun>(</SPAN><SPAN class=pln>frame1</SPAN><SPAN class=pun>.</SPAN><SPAN class=pln>location</SPAN><SPAN class=pun>);</SPAN><SPAN class=pln> </SPAN><SPAN class=com>//undefined</SPAN><SPAN class=pln><BR> alert</SPAN><SPAN class=pun>(</SPAN><SPAN class=pln>frameA</SPAN><SPAN class=pun>.</SPAN><SPAN class=pln>src</SPAN><SPAN class=pun>);</SPAN><SPAN class=pln> </SPAN><SPAN class=com>//undefined</SPAN><SPAN class=pln><br><br> alert</SPAN><SPAN class=pun>(</SPAN><SPAN class=pln>frameA</SPAN><SPAN class=pun>.</SPAN><SPAN class=pln>location</SPAN><SPAN class=pun>);</SPAN><SPAN class=pln> </SPAN><SPAN class=com>//location</SPAN><SPAN class=pln><BR> alert</SPAN><SPAN class=pun>(</SPAN><SPAN class=pln>frameA</SPAN><SPAN class=pun>.</SPAN><SPAN class=pln>document</SPAN><SPAN class=pun>.</SPAN><SPAN class=pln>location</SPAN><SPAN class=pun>);</SPAN><SPAN class=pln><br><br> alert</SPAN><SPAN class=pun>(</SPAN><SPAN class=pln>frame1</SPAN><SPAN class=pun>.</SPAN><SPAN class=pln>document</SPAN><SPAN class=pun>.</SPAN><SPAN class=pln>body</SPAN><SPAN class=pun>.</SPAN><SPAN class=pln>innerHTML</SPAN><SPAN class=pun>);</SPAN><SPAN class=pln> </SPAN><SPAN class=com>//这里返回的是MainForm.aspx的body里的innerHTML</SPAN><SPAN class=pln><BR> alert</SPAN><SPAN class=pun>(</SPAN><SPAN class=pln>frame1</SPAN><SPAN class=pun>.</SPAN><SPAN class=pln>document</SPAN><SPAN class=pun>.</SPAN><SPAN class=pln>documentElement</SPAN><SPAN class=pun>.</SPAN><SPAN class=pln>innerHTML</SPAN><SPAN class=pun>);</SPAN><SPAN class=pln> </SPAN><SPAN class=com>//这里返回的是MainForm.aspx的html里的innerHTML</SPAN><SPAN class=pln><br><br> alert</SPAN><SPAN class=pun>(</SPAN><SPAN class=pln>frameA</SPAN><SPAN class=pun>.</SPAN><SPAN class=pln>document</SPAN><SPAN class=pun>.</SPAN><SPAN class=pln>body</SPAN><SPAN class=pun>.</SPAN><SPAN class=pln>innerHTML</SPAN><SPAN class=pun>);</SPAN><SPAN class=pln> </SPAN><SPAN class=com>//这里返回的是FrameA.aspx的body里的innerHTML</SPAN><SPAN class=pln><BR> alert</SPAN><SPAN class=pun>(</SPAN><SPAN class=pln>frameA</SPAN><SPAN class=pun>.</SPAN><SPAN class=pln>document</SPAN><SPAN class=pun>.</SPAN><SPAN class=pln>documentElement</SPAN><SPAN class=pun>.</SPAN><SPAN class=pln>innerHTML</SPAN><SPAN class=pun>);</SPAN><SPAN class=pln> </SPAN><SPAN class=com>//这里返回的是FrameA.aspx的html里的innerHTML</SPAN><SPAN class=pln><br><br> </SPAN><SPAN class=com>//********************************************** </SPAN><SPAN class=pln><BR> </SPAN><SPAN class=kwd>var</SPAN><SPAN class=pln> childFrameDoc </SPAN><SPAN class=pun>=</SPAN><SPAN class=pln> </SPAN><SPAN class=kwd>undefined</SPAN><SPAN class=pun>;</SPAN><SPAN class=pln><br><br> </SPAN><SPAN class=com>//取FrameA.aspx内的input文本</SPAN><SPAN class=pln><BR> </SPAN><SPAN class=kwd>if</SPAN><SPAN class=pln> </SPAN><SPAN class=pun>(</SPAN><SPAN class=pln>document</SPAN><SPAN class=pun>.</SPAN><SPAN class=pln>all</SPAN><SPAN class=pun>)</SPAN><SPAN class=pln> </SPAN><SPAN class=pun>{</SPAN><SPAN class=com>//IE</SPAN><SPAN class=pln><BR> childFrameDoc </SPAN><SPAN class=pun>=</SPAN><SPAN class=pln> frameA</SPAN><SPAN class=pun>.</SPAN><SPAN class=pln>document</SPAN><SPAN class=pun>;</SPAN><SPAN class=pln> </SPAN><SPAN class=com>//*** 如果是frame1,就取不到FrameA.aspx页面里的input ***</SPAN><SPAN class=pln><BR> </SPAN><SPAN class=pun>}</SPAN><SPAN class=pln> </SPAN><SPAN class=kwd>else</SPAN><SPAN class=pln> </SPAN><SPAN class=pun>{</SPAN><SPAN class=com>//Firefox</SPAN><SPAN class=pln><BR> childFrameDoc </SPAN><SPAN class=pun>=</SPAN><SPAN class=pln> frameA</SPAN><SPAN class=pun>.</SPAN><SPAN class=pln>contentDocument</SPAN><SPAN class=pun>;</SPAN><SPAN class=pln><BR> </SPAN><SPAN class=pun>}</SPAN><SPAN class=pln><BR> alert</SPAN><SPAN class=pun>(</SPAN><SPAN class=pln>childFrameDoc</SPAN><SPAN class=pun>.</SPAN><SPAN class=pln>body</SPAN><SPAN class=pun>.</SPAN><SPAN class=pln>innerHTML</SPAN><SPAN class=pun>);</SPAN><SPAN class=pln><br><br> </SPAN><SPAN class=kwd>var</SPAN><SPAN class=pln> childTxt </SPAN><SPAN class=pun>=</SPAN><SPAN class=pln> childFrameDoc</SPAN><SPAN class=pun>.</SPAN><SPAN class=pln>getElementById</SPAN><SPAN class=pun>(</SPAN><SPAN class=str>"txtUserName"</SPAN><SPAN class=pun>);</SPAN><SPAN class=pln><BR> </SPAN><SPAN class=kwd>var</SPAN><SPAN class=pln> childTxtByName </SPAN><SPAN class=pun>=</SPAN><SPAN class=pln> childFrameDoc</SPAN><SPAN class=pun>.</SPAN><SPAN class=pln>getElementsByName</SPAN><SPAN class=pun>(</SPAN><SPAN class=str>"txtUserName"</SPAN><SPAN class=pun>);</SPAN><SPAN class=pln><br><br> alert</SPAN><SPAN class=pun>(</SPAN><SPAN class=pln>childTxt </SPAN><SPAN class=pun>==</SPAN><SPAN class=pln> childTxtByName</SPAN><SPAN class=pun>[</SPAN><SPAN class=lit>0</SPAN><SPAN class=pun>]);</SPAN><SPAN class=pln> </SPAN><SPAN class=com>//true</SPAN><SPAN class=pln><BR> alert</SPAN><SPAN class=pun>(</SPAN><SPAN class=pln>childTxt</SPAN><SPAN class=pun>.</SPAN><SPAN class=pln>value</SPAN><SPAN class=pun>);</SPAN><SPAN class=pln> </SPAN><SPAN class=com>//jeff wong</SPAN><SPAN class=pln><BR> alert</SPAN><SPAN class=pun>(</SPAN><SPAN class=pln>childTxtByName</SPAN><SPAN class=pun>[</SPAN><SPAN class=lit>0</SPAN><SPAN class=pun>].</SPAN><SPAN class=pln>value</SPAN><SPAN class=pun>);</SPAN><SPAN class=pln> </SPAN><SPAN class=com>// jeff wong</SPAN><SPAN class=pln><br><br><BR> </SPAN><SPAN class=com>//取FrameB.aspx内的input文本</SPAN><SPAN class=pln><BR> childFrameDoc </SPAN><SPAN class=pun>=</SPAN><SPAN class=pln> </SPAN><SPAN class=kwd>undefined</SPAN><SPAN class=pun>;</SPAN><SPAN class=pln><BR> </SPAN><SPAN class=kwd>if</SPAN><SPAN class=pln> </SPAN><SPAN class=pun>(</SPAN><SPAN class=pln>document</SPAN><SPAN class=pun>.</SPAN><SPAN class=pln>all</SPAN><SPAN class=pun>)</SPAN><SPAN class=pln> </SPAN><SPAN class=pun>{</SPAN><SPAN class=com>//IE</SPAN><SPAN class=pln><BR> childFrameDoc </SPAN><SPAN class=pun>=</SPAN><SPAN class=pln> frameB</SPAN><SPAN class=pun>.</SPAN><SPAN class=pln>document</SPAN><SPAN class=pun>;</SPAN><SPAN class=pln><BR> </SPAN><SPAN class=pun>}</SPAN><SPAN class=pln> </SPAN><SPAN class=kwd>else</SPAN><SPAN class=pln> </SPAN><SPAN class=pun>{</SPAN><SPAN class=com>//Firefox</SPAN><SPAN class=pln><BR> childFrameDoc </SPAN><SPAN class=pun>=</SPAN><SPAN class=pln> frameB</SPAN><SPAN class=pun>.</SPAN><SPAN class=pln>contentDocument</SPAN><SPAN class=pun>;</SPAN><SPAN class=pln><BR> </SPAN><SPAN class=pun>}</SPAN><SPAN class=pln><BR> alert</SPAN><SPAN class=pun>(</SPAN><SPAN class=pln>childFrameDoc</SPAN><SPAN class=pun>.</SPAN><SPAN class=pln>body</SPAN><SPAN class=pun>.</SPAN><SPAN class=pln>innerHTML</SPAN><SPAN class=pun>);</SPAN><SPAN class=pln><br><br> </SPAN><SPAN class=kwd>var</SPAN><SPAN class=pln> childTxt </SPAN><SPAN class=pun>=</SPAN><SPAN class=pln> childFrameDoc</SPAN><SPAN class=pun>.</SPAN><SPAN class=pln>getElementById</SPAN><SPAN class=pun>(</SPAN><SPAN class=str>"txtUserNameB"</SPAN><SPAN class=pun>);</SPAN><SPAN class=pln><BR> </SPAN><SPAN class=kwd>var</SPAN><SPAN class=pln> childTxtByName </SPAN><SPAN class=pun>=</SPAN><SPAN class=pln> childFrameDoc</SPAN><SPAN class=pun>.</SPAN><SPAN class=pln>getElementsByName</SPAN><SPAN class=pun>(</SPAN><SPAN class=str>"txtUserNameB"</SPAN><SPAN class=pun>);</SPAN><SPAN class=pln><br><br> alert</SPAN><SPAN class=pun>(</SPAN><SPAN class=pln>childTxt </SPAN><SPAN class=pun>==</SPAN><SPAN class=pln> childTxtByName</SPAN><SPAN class=pun>[</SPAN><SPAN class=lit>0</SPAN><SPAN class=pun>]);</SPAN><SPAN class=pln> </SPAN><SPAN class=com>//true</SPAN><SPAN class=pln><BR> alert</SPAN><SPAN class=pun>(</SPAN><SPAN class=pln>childTxt</SPAN><SPAN class=pun>.</SPAN><SPAN class=pln>value</SPAN><SPAN class=pun>);</SPAN><SPAN class=pln> </SPAN><SPAN class=com>//jeffery zhao</SPAN><SPAN class=pln><BR> alert</SPAN><SPAN class=pun>(</SPAN><SPAN class=pln>childTxtByName</SPAN><SPAN class=pun>[</SPAN><SPAN class=lit>0</SPAN><SPAN class=pun>].</SPAN><SPAN class=pln>value</SPAN><SPAN class=pun>);</SPAN><SPAN class=pln> </SPAN><SPAN class=com>// jeffery zhao</SPAN><SPAN class=pln><br><br> </SPAN><SPAN class=pun>}</SPAN></CODE>
小结:
a、通过iframe对象所在页面的对象模型(通过document.getElementById("iframeId")获取),你可以访问iframe对象的属性,但不能访问其内容。
b、frames集合提供了对iframe内容的访问(通过document.frames["iframeName"]获取)。通常情况下我们都使用frames集合读写iframe内包含的元素。
c、 如果只想改变iframe的src或者border, scrolling等attributes(与property不是一个概念,property是不能写在标签内的,比 如:scrollHeight,innerHTML等),就需要用到document.getElementById方法.
d、要想使用iframe内的函数或dom元素(比如想得到iframe的document.body的内容),变量就必须通过frames集合.因为它取的是一个完整的DOM模型,而通过id获取的方法只是取出了一个object而已.
e、如果在iframe的页面未完全装载的时候,调用iframe的dom模型,会发生错误.
2、子页面操作父页面
这里以子页面FrameA.aspx举例。在子页面A中,我们通过函数getParent获取MainForm.aspx的dom元素,然后按照正常的dom元素操作就是了:
<CODE jQuery1255503204984="6"><SPAN class=pln> </SPAN><SPAN class=com>//子页面与父页面之间的操作 </SPAN><SPAN class=pln><BR> </SPAN><SPAN class=kwd>function</SPAN><SPAN class=pln> getParent</SPAN><SPAN class=pun>()</SPAN><SPAN class=pln> </SPAN><SPAN class=pun>{</SPAN><SPAN class=pln><BR> </SPAN><SPAN class=kwd>if</SPAN><SPAN class=pln> </SPAN><SPAN class=pun>(</SPAN><SPAN class=kwd>self</SPAN><SPAN class=pln> </SPAN><SPAN class=pun>!=</SPAN><SPAN class=pln> top</SPAN><SPAN class=pun>)</SPAN><SPAN class=pln> </SPAN><SPAN class=pun>{</SPAN><SPAN class=pln><BR> </SPAN><SPAN class=kwd>var</SPAN><SPAN class=pln> oDoc </SPAN><SPAN class=pun>=</SPAN><SPAN class=pln> top</SPAN><SPAN class=pun>.</SPAN><SPAN class=pln>parent</SPAN><SPAN class=pun>.</SPAN><SPAN class=pln>document</SPAN><SPAN class=pun>;</SPAN><SPAN class=pln><BR> alert</SPAN><SPAN class=pun>(</SPAN><SPAN class=pln>oDoc</SPAN><SPAN class=pun>.</SPAN><SPAN class=pln>body</SPAN><SPAN class=pun>.</SPAN><SPAN class=pln>innerHTML</SPAN><SPAN class=pun>);</SPAN><SPAN class=pln> <BR> alert</SPAN><SPAN class=pun>(</SPAN><SPAN class=pln>oDoc</SPAN><SPAN class=pun>.</SPAN><SPAN class=pln>documentElement</SPAN><SPAN class=pun>.</SPAN><SPAN class=pln>innerHTML</SPAN><SPAN class=pun>);</SPAN><SPAN class=pln> <BR> alert</SPAN><SPAN class=pun>(</SPAN><SPAN class=pln>oDoc</SPAN><SPAN class=pun>.</SPAN><SPAN class=pln>frames</SPAN><SPAN class=pun>.</SPAN><SPAN class=pln>length</SPAN><SPAN class=pun>);</SPAN><SPAN class=pln> </SPAN><SPAN class=com>//返回结果:2 表明父页面有两个iframe</SPAN><SPAN class=pln><br><br> </SPAN><SPAN class=com>//操作父页面的文本框</SPAN><SPAN class=pln><BR> </SPAN><SPAN class=kwd>var</SPAN><SPAN class=pln> oTxt </SPAN><SPAN class=pun>=</SPAN><SPAN class=pln> oDoc</SPAN><SPAN class=pun>.</SPAN><SPAN class=pln>getElementById</SPAN><SPAN class=pun>(</SPAN><SPAN class=str>"txtParent"</SPAN><SPAN class=pun>);</SPAN><SPAN class=pln><BR> alert</SPAN><SPAN class=pun>(</SPAN><SPAN class=pln>oTxt</SPAN><SPAN class=pun>.</SPAN><SPAN class=pln>value</SPAN><SPAN class=pun>);</SPAN><SPAN class=pln><br><br> </SPAN><SPAN class=pun>}</SPAN><SPAN class=pln><BR> </SPAN><SPAN class=kwd>else</SPAN><SPAN class=pln> alert</SPAN><SPAN class=pun>(</SPAN><SPAN class=str>"不在框架中"</SPAN><SPAN class=pun>);</SPAN><SPAN class=pln><BR> </SPAN><SPAN class=pun>}</SPAN></CODE>
3、子页面操作子页面
这个还要借助主页面间接获取另一个子页面。这里还以子页面A来举例。通过主页面,我们间接获取了子页面B,然后像正常操作dom一样,子页面A完成对子页面B的控制和操作。
先修改getAnotherChild()函数:
<CODE jQuery1255503204984="7"><SPAN class=pln> </SPAN><SPAN class=com>//当前子页面与另外一个子页面之间的操作</SPAN><SPAN class=pln><BR> </SPAN><SPAN class=kwd>function</SPAN><SPAN class=pln> getAnotherChild</SPAN><SPAN class=pun>()</SPAN><SPAN class=pln> </SPAN><SPAN class=pun>{</SPAN><SPAN class=pln><BR> alert</SPAN><SPAN class=pun>(</SPAN><SPAN class=kwd>self</SPAN><SPAN class=pun>.</SPAN><SPAN class=pln>location</SPAN><SPAN class=pun>.</SPAN><SPAN class=pln>href</SPAN><SPAN class=pun>);</SPAN><SPAN class=pln> </SPAN><SPAN class=com>//当前页面的url</SPAN><SPAN class=pln><br><br> </SPAN><SPAN class=com>//通过父页面,间接获取另外一个子页面</SPAN><SPAN class=pln><BR> </SPAN><SPAN class=kwd>if</SPAN><SPAN class=pln> </SPAN><SPAN class=pun>(</SPAN><SPAN class=kwd>self</SPAN><SPAN class=pln> </SPAN><SPAN class=pun>!=</SPAN><SPAN class=pln> top</SPAN><SPAN class=pun>)</SPAN><SPAN class=pln> </SPAN><SPAN class=pun>{</SPAN><SPAN class=pln><BR> </SPAN><SPAN class=kwd>var</SPAN><SPAN class=pln> oDoc </SPAN><SPAN class=pun>=</SPAN><SPAN class=pln> top</SPAN><SPAN class=pun>.</SPAN><SPAN class=pln>parent</SPAN><SPAN class=pun>.</SPAN><SPAN class=pln>document</SPAN><SPAN class=pun>;</SPAN><SPAN class=pln><BR> </SPAN><SPAN class=kwd>var</SPAN><SPAN class=pln> oAnotherFrame </SPAN><SPAN class=pun>=</SPAN><SPAN class=pln> oDoc</SPAN><SPAN class=pun>.</SPAN><SPAN class=pln>frames</SPAN><SPAN class=pun>[</SPAN><SPAN class=str>"iframeB"</SPAN><SPAN class=pun>];</SPAN><SPAN class=pln> </SPAN><SPAN class=com>//返回另外一个iframe</SPAN><SPAN class=pln><br><br> alert</SPAN><SPAN class=pun>(</SPAN><SPAN class=pln>oAnotherFrame</SPAN><SPAN class=pun>.</SPAN><SPAN class=pln>location</SPAN><SPAN class=pun>);</SPAN><SPAN class=pln><BR> alert</SPAN><SPAN class=pun>(</SPAN><SPAN class=pln>oAnotherFrame</SPAN><SPAN class=pun>.</SPAN><SPAN class=pln>document</SPAN><SPAN class=pun>.</SPAN><SPAN class=pln>body</SPAN><SPAN class=pun>.</SPAN><SPAN class=pln>innerHTML</SPAN><SPAN class=pun>);</SPAN><SPAN class=pln><BR> alert</SPAN><SPAN class=pun>(</SPAN><SPAN class=pln>oAnotherFrame</SPAN><SPAN class=pun>.</SPAN><SPAN class=pln>document</SPAN><SPAN class=pun>.</SPAN><SPAN class=pln>documentElement</SPAN><SPAN class=pun>.</SPAN><SPAN class=pln>innerHTML</SPAN><SPAN class=pun>);</SPAN><SPAN class=pln><br><br> </SPAN><SPAN class=kwd>var</SPAN><SPAN class=pln> oTxt </SPAN><SPAN class=pun>=</SPAN><SPAN class=pln> oAnotherFrame</SPAN><SPAN class=pun>.</SPAN><SPAN class=pln>document</SPAN><SPAN class=pun>.</SPAN><SPAN class=pln>getElementById</SPAN><SPAN class=pun>(</SPAN><SPAN class=str>"txtUserNameB"</SPAN><SPAN class=pun>);</SPAN><SPAN class=pln><BR> alert</SPAN><SPAN class=pun>(</SPAN><SPAN class=pln>oTxt</SPAN><SPAN class=pun>.</SPAN><SPAN class=pln>value</SPAN><SPAN class=pun>);</SPAN><SPAN class=pln> </SPAN><SPAN class=com>//jeffery zhao</SPAN><SPAN class=pln><BR> </SPAN><SPAN class=pun>}</SPAN><SPAN class=pln><BR> </SPAN><SPAN class=pun>}</SPAN><SPAN class=pln><BR></SPAN></CODE>
注意:修改完getAnotherChild()函数,然后将子页面A(FrameA.aspx)中的textUserName的onblur事件改为 onblur="getAnotherChild()"就可以看到结果了.

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

如何使用WebSocket和JavaScript實現線上語音辨識系統引言:隨著科技的不斷發展,語音辨識技術已成為了人工智慧領域的重要組成部分。而基於WebSocket和JavaScript實現的線上語音辨識系統,具備了低延遲、即時性和跨平台的特點,成為了廣泛應用的解決方案。本文將介紹如何使用WebSocket和JavaScript來實現線上語音辨識系

WebSocket與JavaScript:實現即時監控系統的關鍵技術引言:隨著互聯網技術的快速發展,即時監控系統在各個領域中得到了廣泛的應用。而實現即時監控的關鍵技術之一就是WebSocket與JavaScript的結合使用。本文將介紹WebSocket與JavaScript在即時監控系統中的應用,並給出程式碼範例,詳細解釋其實作原理。一、WebSocket技

如何利用JavaScript和WebSocket實現即時線上點餐系統介紹:隨著網路的普及和技術的進步,越來越多的餐廳開始提供線上點餐服務。為了實現即時線上點餐系統,我們可以利用JavaScript和WebSocket技術。 WebSocket是一種基於TCP協定的全雙工通訊協議,可實現客戶端與伺服器的即時雙向通訊。在即時線上點餐系統中,當使用者選擇菜餚並下訂單

如何使用WebSocket和JavaScript實現線上預約系統在當今數位化的時代,越來越多的業務和服務都需要提供線上預約功能。而實現一個高效、即時的線上預約系統是至關重要的。本文將介紹如何使用WebSocket和JavaScript來實作一個線上預約系統,並提供具體的程式碼範例。一、什麼是WebSocketWebSocket是一種在單一TCP連線上進行全雙工

JavaScript和WebSocket:打造高效的即時天氣預報系統引言:如今,天氣預報的準確性對於日常生活以及決策制定具有重要意義。隨著技術的發展,我們可以透過即時獲取天氣數據來提供更準確可靠的天氣預報。在本文中,我們將學習如何使用JavaScript和WebSocket技術,來建立一個高效的即時天氣預報系統。本文將透過具體的程式碼範例來展示實現的過程。 We

JavaScript教學:如何取得HTTP狀態碼,需要具體程式碼範例前言:在Web開發中,經常會涉及到與伺服器進行資料互動的場景。在與伺服器進行通訊時,我們經常需要取得傳回的HTTP狀態碼來判斷操作是否成功,並根據不同的狀態碼來進行對應的處理。本篇文章將教你如何使用JavaScript來取得HTTP狀態碼,並提供一些實用的程式碼範例。使用XMLHttpRequest

用法:在JavaScript中,insertBefore()方法用於在DOM樹中插入一個新的節點。這個方法需要兩個參數:要插入的新節點和參考節點(即新節點將要插入的位置的節點)。

JavaScript是一種廣泛應用於Web開發的程式語言,而WebSocket則是一種用於即時通訊的網路協定。結合二者的強大功能,我們可以打造一個高效率的即時影像處理系統。本文將介紹如何利用JavaScript和WebSocket來實作這個系統,並提供具體的程式碼範例。首先,我們需要明確指出即時影像處理系統的需求和目標。假設我們有一個攝影機設備,可以擷取即時的影像數
