huangxx 发表于 2013-1-28 21:06:01

PUSHLET 实战:JavaScript是否在html完全显示后执行

else if (eventType == 'listen-ack') {_setStatus('listening');_doCallback(event, window.onListenAck);// Send empty heartbeat event. This// silences many busy browser windows.// At least in Moz and IE.alert("在push方式下服务端持续发数据,正常情况下后面的语句继续执行");p_heartbeat();}  
查看pushlet服务端发送侦听确认后,客户端收到一段内容后(服务端持续发送)是否立刻执行,答案见下:
 
 的几个有争议的地方有:
    1:html是否在完全被传送到客户段之后才显示?
    2:JavaScript是否在html完全显示后执行?
    3:如果JavaScript在html没有被完全显示就可以执行,那么此时的alert会不会是浏览器本身与服务器端的通信处于等待状态?( alert状态下,浏览器会处于等待状态是指浏览器自身当前的线程处于等待状体)
    首先我们先假设html是在完全被传送到客户段之后才显示。那么我们在打开网页的时候也就会有这种现象出现:如果打开很大的网页(指数据比较多,图片很大)时候,刚刚打开的时候会是一片空白,过了一段时间之后画面会突然出现。空白的时候是浏览器在与服务器请求数据,由于数据很大,请求的时间就会相应长。那么在这段时间内由于html数据没有传送完成,浏览器不会显示html的信息,所以会一片空白。
    对此我做了一个测试试样:
<div style="padding-right: 5.4pt; padding-left: 5.4pt; background: #e6e6e6 0% 50%; padding-bottom: 4px; width: 98%; padding-top: 4px;">http://www.cnblogs.com/Images/OutliningIndicators/None.gifprivate void Page_Load(object sender, System.EventArgs e)
http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gifhttp://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gifhttp://www.cnblogs.com/Images/dot.gif{
http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif    for(int i=0;i<50;i++)
http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gifhttp://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif    http://www.cnblogs.com/Images/dot.gif{
http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif        this.Page.Response.Write("<table> <tr><td>");
http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif            using (FileStream fs = File.OpenRead(@"D:\Inetpub\wwwroot\Test\123.bmp")) 
http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gifhttp://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif            http://www.cnblogs.com/Images/dot.gif{
http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif                byte[] b = new byte[1024];                
http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif                while (fs.Read(b,0,b.Length) > 0) 
http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gifhttp://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif                http://www.cnblogs.com/Images/dot.gif{
http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif                    this.Page.Response.Write(b);
http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif                }
http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif            }
http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif        this.Page.Response.Write("</table> </tr></td>");
http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif    }
http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif}
页: [1]
查看完整版本: PUSHLET 实战:JavaScript是否在html完全显示后执行