Iframe的基础应用——关于Iframe刷页问题的两种方法

本文介绍了使用Iframe实现页面刷新的两种方法:一是通过重定向到目标页面;二是通过调用页面内的JavaScript方法实现页面重载。同时,还介绍了如何从Iframe内部刷新父页面。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<iframe align="center" marginwidth="0" marginheight="0" src="http://218.16.120.35:65001/PC/Global/images/b.html" frameborder="0" width="728" scrolling="no" height="90"></iframe>
看到题目相信大家都已经知道这次要讲述什么内容了。关于Iframe刷页问题在网络中随便一搜索就能找到,我也是这么做的,可是搜索到的结果不一定就是自己的东西,因此我们应该学会总结。在这里我们就来总结一下关于Iframe刷页。
网络中的论坛或者是博客中大多数都是用的父页A.aspx和子页B.aspx形式来举例子的,这里我们的例子来用三个页面,一个父页A.aspx和两个子页B.aspx、C.aspx,可能大家会觉得,为何要用两个子页呢,用一个子页和两个子页有什么区别呢?因为我们这里要用到从子页C.aspx来刷新子页B.aspx。
下面先讲解第一种刷新方法:“重新定向到本页”
父页A.aspx的脚本如下:
1<%@Pagelanguage="c#"Codebehind="A.aspx.cs"AutoEventWireup="false"Inherits="Demo.A"%>
2<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.0Transitional//EN">
3<HTML>
4<HEAD>
5<title>A</title>
6<metacontent="MicrosoftVisualStudio.NET7.1"name="GENERATOR">
7<metacontent="C#"name="CODE_LANGUAGE">
8<metacontent="JavaScript"name="vs_defaultClientScript">
9<metacontent="http://schemas.microsoft.com/intellisense/ie5"name="vs_targetSchema">
10</HEAD>
11<bodyMS_POSITIONING="GridLayout">
12<formid="Form1"method="post"runat="server">
13<iframeid="BIframe"name="BIframe"style="Z-INDEX:102;LEFT:0px;WIDTH:748px;POSITION:absolute;TOP:0px;HEIGHT:511px"marginWidth="0"marginHeight="0"src="B.aspx"frameBorder="0"scrolling="no"allowTransparency></iframe>
14<iframeid="CIframe"name="CIframe"style="Z-INDEX:105;LEFT:750px;OVERFLOW:hidden;WIDTH:254px;POSITION:absolute;TOP:0px;HEIGHT:511px"marginWidth="0"marginHeight="0"src="C.aspx"frameBorder="0"scrolling="no"allowTransparencyDESIGNTIMEDRAGDROP="16"></iframe>
15</form>
16</body>
17</HTML>
父页A.aspx无后台代码。
子页B.aspx的脚本如下:
1<%@Pagelanguage="c#"Codebehind="B.aspx.cs"AutoEventWireup="false"Inherits="Demo.B"%>
2<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.0Transitional//EN">
3<HTML>
4<HEAD>
5<title>B</title>
6<metacontent="MicrosoftVisualStudio.NET7.1"name="GENERATOR">
7<metacontent="C#"name="CODE_LANGUAGE">
8<metacontent="JavaScript"name="vs_defaultClientScript">
9<metacontent="http://schemas.microsoft.com/intellisense/ie5"name="vs_targetSchema">
10<metahttp-equiv="pragma"content="no-cache">
11<metahttp-equiv="Cache-Control"content="no-cache,must-revalidate">
12<basetarget="_self">
13<scriptlanguage="javascript"type="text/javascript">
14functionRefreshmyForm()
15{
16varmyForm=document.Form1;
17myForm.submit();
18}

19
</script>
20</HEAD>
21<bodyMS_POSITIONING="GridLayout">
22<formid="Form1"method="post"runat="server">
23<divid="LayersDiv"style="FONT-SIZE:9pt;Z-INDEX:112;LEFT:0px;WIDTH:175px;CURSOR:hand;COLOR:navy;PADDING-TOP:6px;FONT-STYLE:normal;FONT-FAMILY:宋体;POSITION:absolute;TOP:0px;HEIGHT:26px;TEXT-ALIGN:center;FONT-VARIANT:normal"onclick="LayersDivOnClick();"align="left">Div层显示控制</div>
24<divid="LayersControlDiv"style="Z-INDEX:115;LEFT:0px;VISIBILITY:hidden;WIDTH:156px;CURSOR:hand;POSITION:absolute;TOP:26px;HEIGHT:360px">隐藏的Div层</div>
25</form>
26<scriptlanguage="javascript"type="text/javascript">
27varmyDiv=document.getElementById("LayersControlDiv");
28functionLayersDivOnClick()
29{
30if(myDiv.style.visibility=="hidden")
31{
32myDiv.style.visibility="visible";
33}

34else
35{
36myDiv.style.visibility="hidden";
37}

38}

39
</script>
40</body>
41</HTML>
(这里有一个控制Div层显示的JavaScript的方法从第26行开始的,以及第10、11、12行标记是为了去处页面缓存的,当某个aspx页面作为弹出页面或者嵌入在Iframe中的页面而言是需要这三行代码消除页面缓存的,否则呈现的是缓存中的数据页面——不值得一提,但还是提了,呵呵……)
子页B.aspx的后台代码:
主要来关心一下Page_Load事件的代码,其他的在这里省略了
1privatevoidPage_Load(objectsender,System.EventArgse)
2{
3stringmyStr=String.Empty;
4if(!this.Page.IsPostBack)
5{
6myStr="这是重定向刷新B.aspx页面";
7this.Response.Write("<script>alert('"+myStr+"');</script>");
8}

9else
10{
11myStr="这是重载本页后刷新B.aspx页面";
12this.Response.Write("<script>alert('"+myStr+"');</script>");
13}

14}
下面我们在C.aspx页面中放置两个服务器控件“Button”(Button1和Button2),Text属性分别为“重定向B.aspx页面”和“重载B.aspx页面”,那么子页C.aspx的脚本如下:
1<%@Pagelanguage="c#"Codebehind="C.aspx.cs"AutoEventWireup="false"Inherits="Demo.C"%>
2<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.0Transitional//EN">
3<HTML>
4<HEAD>
5<title>C</title>
6<metaname="GENERATOR"Content="MicrosoftVisualStudio.NET7.1">
7<metaname="CODE_LANGUAGE"Content="C#">
8<metaname="vs_defaultClientScript"content="JavaScript">
9<metaname="vs_targetSchema"content="http://schemas.microsoft.com/intellisense/ie5">
10<metahttp-equiv="pragma"content="no-cache">
11<metahttp-equiv="Cache-Control"content="no-cache,must-revalidate">
12<basetarget="_self">
13<scriptlanguage="javascript"type="text/javascript">
14functionRefreshmyForm()
15{
16varmyForm=document.Form1;
17myForm.submit();
18}
19</script>
20</HEAD>
21<bodyMS_POSITIONING="GridLayout">
22<formid="Form1"method="post"runat="server">
23<divid="BtnDiv"style="Z-INDEX:107;LEFT:0px;WIDTH:254px;POSITION:absolute;TOP:0px;HEIGHT:290px;BACKGROUND-COLOR:#f2f9ff"align="center">
24<asp:Buttonid="Button1"runat="server"Width="120px"Text="重定向B.aspx页面"></asp:Button>
25<asp:Buttonid="Button2"runat="server"Width="108px"Text="重载B.aspx页面"></asp:Button></div>
26</form>
27</body>
28</HTML>
子页C.aspx的后台代码:
主要关心一下Button1的Click事件
1privatevoidButton1_Click(objectsender,System.EventArgse)
2{
3this.Response.Write("<script>window.parent.document.getElementById('BIframe').src='B.aspx';</script>");
4}
此时启动调试程序(当然将A.aspx设为启动页后调试),点击“Button1”,弹出的消息框永远是“这是重定向刷新B.aspx页面”。

再来看看第二种刷新方法:“重载页面”
子页C.aspx的后台代码:
主要关心一下Button2的Click事件
1privatevoidButton2_Click(objectsender,System.EventArgse)
2{
3this.Response.Write("<script>window.parent.document.frames.BIframe.RefreshmyForm();</script>");
4}
这里我们调用了B.aspx页面的JavaScript的一个回传页面的方法RefreshmyForm(),此时启动调试程序,点击“Button2”,弹出的消息框永远是“这是重载本页后刷新B.aspx页面”。

那么有人就会问了,如何在Iframe的页面中来刷新父页面呢?
我们仍然在C.aspx页面中做这个事情,加入“Button3”,Text属性为“重定向A.aspx页面”,C.aspx的脚本代码我们在这里省略。子页C.aspx的后台代码:
主要关心Button3的Click事件
1privatevoidButton3_Click(objectsender,System.EventArgse)
2{
3this.Response.Write("<script>window.parent.location=window.parent.location;</script>");
4}

在这里我们讲解了关于从Iframe的一个页面刷新另外一个Iframe页面的两种方法,以及简单说明了如何从Iframe的页面来刷新其所在的父页面。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值