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技

如何使用WebSocket和JavaScript实现在线语音识别系统引言:随着科技的不断发展,语音识别技术已经成为了人工智能领域的重要组成部分。而基于WebSocket和JavaScript实现的在线语音识别系统,具备了低延迟、实时性和跨平台的特点,成为了一种被广泛应用的解决方案。本文将介绍如何使用WebSocket和JavaScript来实现在线语音识别系

如何利用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中的HTTP状态码获取方法简介:在进行前端开发中,我们常常需要处理与后端接口的交互,而HTTP状态码就是其中非常重要的一部分。了解和获取HTTP状态码有助于我们更好地处理接口返回的数据。本文将介绍使用JavaScript获取HTTP状态码的方法,并提供具体代码示例。一、什么是HTTP状态码HTTP状态码是指当浏览器向服务器发起请求时,服务
