我在Ext.net Window中放入Iframe,用于调用跨域的网页。使用过程中发现调用下一个页面时,先前的页面会显示出来,然后才跳转到下一个页面,我决定清除先前的页面。
我的做法是,在Window的Close和Hide事件中增加移除方法。即在下一个页面显示前清除页面内容。(我先前做法是在调用下一个页面时,先清除页面内容,在显示,但这样仍然会显示先前页内容。)
具体代码:
1、Ext.Net Window Html代码
增加了Close及Hide事件。
<ext:Window ID="WindowSite" runat="server" Icon="Application" Height="600px" Width="1000px"
BodyStyle="background-color: #fff;" Padding="5" Modal="true" AutoShow="false"
Hidden="true" AutoDoLayout="true" Maximizable="true" Maximized="false"
Html=" <iframe id='iframeSite' frameborder='0' width='100%' height='100%' src=''></iframe>">
<Listeners>
<Close Fn="WindowCloseOrHide" />
<Hide Fn="WindowCloseOrHide" />
</Listeners>
</ext:Window>
BodyStyle="background-color: #fff;" Padding="5" Modal="true" AutoShow="false"
Hidden="true" AutoDoLayout="true" Maximizable="true" Maximized="false"
Html=" <iframe id='iframeSite' frameborder='0' width='100%' height='100%' src=''></iframe>">
<Listeners>
<Close Fn="WindowCloseOrHide" />
<Hide Fn="WindowCloseOrHide" />
</Listeners>
</ext:Window>
2、编写清除方法
有两种,一种是直接设置空白页,代码如下。
var WindowCloseOrHide = function () {
//清除ifame
var iframeSite = document.getElementById("iframeSite");
if (iframeSite) {
iframeSite.src = "about:blank";"BlackPage.htm";
}
}
//清除ifame
var iframeSite = document.getElementById("iframeSite");
if (iframeSite) {
iframeSite.src = "about:blank";"BlackPage.htm";
}
}
另外一种,在项目建立一个页面,然后调用这个页面。我是建立“BlackPage.htm”页,在页加入等待信息,这样第次加载前都会显示等待信息,Html代码如下。
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
</head>
<body>
<div style="text-align: center; color: Blue">
正在加载……</div>
</body>
</html>
<head>
<title></title>
</head>
<body>
<div style="text-align: center; color: Blue">
正在加载……</div>
</body>
</html>
清除代码如下:
var WindowCloseOrHide = function () {
//清除ifame
var iframeSite = document.getElementById("iframeSite");
if (iframeSite) {
iframeSite.src = "about:blank";
// iframeSite.src = "BlackPage.htm";
}
}
//清除ifame
var iframeSite = document.getElementById("iframeSite");
if (iframeSite) {
iframeSite.src = "about:blank";
// iframeSite.src = "BlackPage.htm";
}
}
注:使用以下方式清除Ifrme内容是不行的,原因是跨域操作,代码如下。
var WindowCloseOrHide = function () {
//清除ifame
var iframeSite = document.getElementById("iframeSite");
if (iframeSite) {
iframeSite.document.write("<HTML>");
iframeSite.document.write("<BODY>Loding……");
iframeSite.document.write("</BODY>");
iframeSite.document.write("</HTML>");
iframeSite.document.close();
}
}
//清除ifame
var iframeSite = document.getElementById("iframeSite");
if (iframeSite) {
iframeSite.document.write("<HTML>");
iframeSite.document.write("<BODY>Loding……");
iframeSite.document.write("</BODY>");
iframeSite.document.write("</HTML>");
iframeSite.document.close();
}
}