如何判断网页是不是加载完毕

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何判断网页是不是加载完毕相关的知识,希望对你有一定的参考价值。

我想问浏览器下怎么判断一个页面是否加载完毕了呢?它怎么知道这个页面一共多大,有多少元素(如图片等),整个页面又加载了百分之多少呢?是不是在response头上包含有什么特别的信息?这点非常想知道。
下面是一段JSP代码,完成的功能就是每隔1秒输入一次,一共输10.实际运行过程基本是一行行输入到浏览器中,一共10次。
我不明白的是这10次数据不可能是放在一个response响应中的吧,这就是说浏览器发出了一个request,却得到了10次response,输入10后然后服务器把再把这个连接关闭,这样理解对吗?
新手才学,请明白人给个答案,谢谢。先送50分,好的话再加50分。
JSP代码如下:
<%
out.flush();
int number = 0;
while (true)
out.println(new java.util.Date()+" "+number );
out.flush();
Thread.sleep(1000);
System.out.print(".");
if (number++ > 10)
break;


%>
自己又看了一点http1.1的协议,好像有个Transfer-Encoding: chunked个代表可以边下载数据边显示内容,现在明白一点了,还好更的好解释吗?

其实只有一个response回来,一次请求对应一次响应.
你设置的时间差欺骗了你.服务器的做法是生成多少字符就传给浏览器多少字符.

不同浏览器在处理响应时有不同的做法.
在opera中,是等待这10秒后一起显示,而,firefox,chrome,ie都是收到多少就显示多少.

你在11号早上又问了下,不介意我把问题贴出来吧
sxsboat 2010-11-11 09:55:41
看了你的回答,还是有一点不明白,浏览器怎么知道数据没有传送完全呢? 如果有这么一种情况,我让这个循环很多次,就是很久,一天吧,呵呵,浏览器还会再那一直接受吗?一句话,服务器传送所有数据完成的标志是什么?是在response响应头中的一个东西吗?麻烦你了啊。

这个还没有试验过,在实际应用中,应该不会出现这样的情况,客户是上帝,你这样玩人家,就是找死吧,呵呵.你可以用调试工具看看请求与响应情况.我想服务器和浏览器内部应该会有机制来处理这种情况,也就是有个超时的处理..
在浏览器显示第一条记录时,响应的状态码是200,说明服务器已经处理好请求,并开始发送生成的响应内容.

在这种提交方式(包括表单,刷新,地址栏按回车)下,我还找不到怎么通过程序查看浏览器是否接收完响应内容,我只知道用肉眼看进度条或是鼠标的样子.

但是还有一种提交方式,就是ajax中的xmlhttprequest对象也能向服务器发起请求,xmlhttprequest对象有个readyStae属性.
我摘录一段话给你看看.
在《Pragmatic Ajax A Web 2.0 Primer 》中对readyStae状态的介绍,摘译如下:
0: (Uninitialized) the send( ) method has not yet been invoked.
1: (Loading) the send( ) method has been invoked, request in progress.
2: (Loaded) the send( ) method has completed, entire response received.
3: (Interactive) the response is being parsed.
4: (Completed) the response has been parsed, is ready for harvesting.
0 - (未初始化)还没有调用send()方法
1 - (载入)已调用send()方法,正在发送请求
2 - (载入完成)send()方法执行完成,已经接收到全部响应内容
3 - (交互)正在解析响应内容
4 - (完成)响应内容解析完成,可以在客户端调用了

你看看这个能不能帮到你

参考资料:Pragmatic Ajax A Web 2.0 Primer+原创

参考技术A 这些完全可以用阿冲点击软件来完成啊,支持网页加载判断,自动点击按键模拟、自动录入操作等模块,阿冲点击软件是完全图形界面菜单,不需复杂的编程,操作完全傻瓜化。 参考技术B <body onLoad="javascript:a();">
</body>
这段代码代表 当body区里的内容加载完成后,会触发javaScript里的a方法。
你可以吧10次的数据放到list或者map、set里,然后再把list、set、map放到resoonse里。
参考技术C 那是http响应头信息中有个状态位onreadystatus属性,估计是记错了,记性向来不好。它的值是数值:
http响应状态码
响应码由三位十进制数字组成,它们出现在由HTTP服务器发送的响应的第一行。
响应码分五种类型,由它们的第一位数字表示:
1.1xx:信息,请求收到,继续处理
2.2xx:成功,行为被成功地接受、理解和采纳
3.3xx:重定向,为了完成请求,必须进一步执行的动作
4.4xx:客户端错误,请求包含语法错误或者请求无法实现
5.5xx:服务器错误,服务器不能实现一种明显无效的请
200表示响应成功。

window.onload 和 DOMContentLoaded区别及如何判断dom是否加载完毕

http://blog.allenm.me/2010/02/window-onload-和-domcontentloaded/

其中使用IE不支持DOMContentLoaded,那么判断IE是否加载完DOM的一种方法:判断element的doScroll如果成功则说明DOM载入完成。

http://www.cnblogs.com/haogj/archive/2013/01/15/2861950.html

见第4种方法

以上是关于如何判断网页是不是加载完毕的主要内容,如果未能解决你的问题,请参考以下文章

如何使用selenium webdriver来判断一个网页加载完毕

c#如何判断webbrowser已经加载完毕

你的回答“用selenium webdriver来判断一个网页加载完毕”,如何用加载超时报异常来确定是否加载完毕?

js判断网页是否加载完毕 包括图片

jQuery 是如何判断HTML页面加载完毕的?它的原理是啥?

如何判断WPF下窗口加载完成了