如何判断一个IFrame已经下载完成了?
我要做一个批量下载html页面的程序,我的页面里面有两个frame,其中一个输入需要下载的url,另外一个负责下载,一个任务完毕之后自动启动下一个任务,但是我遇到的问题是我无法得知我的那个负责下载的Frame的相关页面是否已经完成。
我有两个解决办法,但是都不好。
1。window.onload=myfunc 由于下载的页面不是我写的,其中也许也有window.onload的赋值,这样就会覆盖我的函数,使我无法得到onload的消息。
2。每隔一段时间去判断readystate是不是complete,这个也有问题,就是判断太频繁了比较费资源,判断不频繁的话,下载大量的小网页的时候需要的时间太大。
大家有没有什么好方法?
问题点数:100、回复次数:14Top
1 楼hbhbhbhbhb1021(天外水火(我要多努力))回复于 2006-03-10 15:03:51 得分 30
<iframe name="www" src="http://www.baidu.com" onload="alert('haha')">
</iframe>
写在上面的页面上
Top
2 楼meizz(梅花雪)回复于 2006-03-10 15:12:29 得分 0
function mm()
{
if(frames["_hideFrame"].document.readyState=="complete")
alert("已经加载完毕");
else setTimeout("mm()", 100);
} mm();Top
3 楼ice_berg16(寻梦的稻草人)回复于 2006-03-10 15:35:20 得分 0
可以使用xmlhttp来下载
xmlhttp.onreadystatechange = function(){
if (this.readyState == 4)
{
alert('加载完毕!');
}
}Top
4 楼orion_04(猎户座)回复于 2006-03-10 16:29:57 得分 0
谢谢大家。
请问,有办法知道一个url不存在么?或者load失败?Top
5 楼luoyue2001(小兜头)回复于 2006-03-10 16:40:44 得分 0
new Ajax.Request(
url,
{method: 'post', parameters: postStr, onFailure: function(request){ alert('失败'); }, onSuccess: function(request){alert('已经加载完毕');} });
Top
6 楼ice_berg16(寻梦的稻草人)回复于 2006-03-10 16:42:16 得分 70
<script type="text/javascript">
var xml = new ActiveXObject("Msxml2.XMLHTTP");
var url = "http://www.163.com/test.htm";
xml.onreadystatechange=function(){
if( xml.readyState == 4 )
{
if( xml.status == 200 )
alert('网页存在!');
else
alert('网页不存在');
}
}
xml.open('get',url,true);
xml.send();
</script>Top
7 楼orion_04(猎户座)回复于 2006-03-10 16:50:28 得分 0
谢谢楼上的兄弟,你用的XMLHTTP就是Firefox里面的XMLHTTPRequest吧。挺好用的。
不过我这边要做的事情是想把网页都下载到cache中,以便加速后面的浏览。这样的话XMLHTTP这种方法就不行了,因为这种方法不能把网页的相关内容,比如图片等东西一并下载下来。
能不能通过iframe来做这件事情呢?Top
8 楼ice_berg16(寻梦的稻草人)回复于 2006-03-10 17:24:24 得分 0
<input type="button" value="加载" onclick="loadURL('http://www.163.com')"/>
<input type="button" value="显示" onclick="show()"/>
<iframe id="ice" style="display:none"></iframe>
<script type="text/javascript">
function loadURL(url){
var f = document.getElementById("ice");
f.style.display="none";
f.src= url;
f.onreadystatechange=function(){
if( f.readyState == 'complete' )
{
alert('加载完毕');
}
}
}
function show()
{
document.getElementById("ice").style.display="block";
}
</script>Top
9 楼mingxuan3000(铭轩)回复于 2006-03-10 17:28:48 得分 0
markTop
10 楼orion_04(猎户座)回复于 2006-03-10 17:35:37 得分 0
ice, 谢谢你。请问你知道在上面这段code中如何判断网页不存在的情况么?这个是我想知道的。:)
Top
11 楼ice_berg16(寻梦的稻草人)回复于 2006-03-10 21:03:09 得分 0
这个没办法,如果http server 自定义404页面的话,你根本不知道那是不是不存在的
对于server返回404的情况,可以这样
f.onreadystatechange=function(){
if( f.readyState == 'complete' )
{
alert('加载完毕');
if(f.contentWindow.document.title.indexOf("404") != "-1 )
alert('网页不存在');
else
alert('网页存在');
}
}Top
12 楼ice_berg16(寻梦的稻草人)回复于 2006-03-10 21:03:47 得分 0
indexOf("404") != "-1 )
=>
indexOf("404") != -1 )Top
13 楼orion_04(猎户座)回复于 2006-03-12 19:36:42 得分 0
谢谢。Top
14 楼MYLiao(醉书生)回复于 2006-03-13 19:38:04 得分 0
markTop




