如何控制页面内容的加载顺序

很久以前就做过类似的东西,昨天因为个人网站的需要,把相应代码湾镇写了一下,现公布如下( 因刚开始做站长,刚才在中国站长站论坛中放置了一下,居然没人顶,顿时心灰意冷,所以,还是回CSDN看看效果如何 :)  )


原文如下:


目前网站之间相互调用的情况越来越多,比如 需要调用某个第三方提供的一些接口(天气预报),或者是第三方提供的广告......

但是出于各种原因(网络故障、服务器故障、软件故障......)常常会发生第三方的相应页面不能访问的情况,而直接导致自己网站不能正常访问,或者访问速度比较慢。

比如:某个网站为 头、内容、底 结构,在网站的头部放置了第三方提供的广告,但是出于某种原因,第三方的服务不能正常访问了,直接导致的情况就是,整个网站 头部广告 以下的部分均不能正常访问(或者要过很久以后才能打开,昨天的台湾大地震,导致了 Google Adsense 不能正常访问,直接导致了我的个人网站 http://www.oldtool.net 不能正常打开。)。

为了解决如上的问题,查阅了很多文章后,找到如下的解决方案:页面的延时加载(Page Delay Load)。

在 IE 中,几乎每个对象(div iframe td ... )均有一个属性 readyState(http://msdn2.microsoft.com/en-us/library/ms534358.aspx) ,此属性反应对象在当前页面的载入状态,当该对象完全载入以后,则当前对象的 readyState=="complete" ,借助该属性,可以控制待当前页面最期待的内容载入完成以后,再载入有可能出错的页面(或者是优先级不高的页面)。

详细代码如下:

问题页面代码:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <title>精巧软件 <A href="http://www.oldtool.netwww.oldtool.net</title>
</head>
<body>
    <div>这里是页面的最顶端内容。</div>
    <div>如下的 div1 div2 div3 div4 可以放置任何第三方的内容,比如广告。</div>
    <div style="width:200px;height:40px;border:1px solid red;">inner html 1</div>>
    <div>说明:此处的 宽、高,不一定需要提前设置,可以将此 Container 的宽、高根据内部的内容自适应。</div>
    <div style="width:200px;height:40px;border:1px solid red;">inner html 2</div>
    <div>说明:div3中的内容不能正常访问,直接导致其下最重要的内容不能正常打开,或者要过很久以后才可以正常打开。</div>
    <div style="width:200px;height:40px;border:1px solid red;">
    <!-- Google Adsense -->
    <script type="text/javascript"><!--
google_ad_client = "pub-wrongcode";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
google_ad_channel = "";
//--></script>
    <script type="text/javascript" src="http://wrongcode.wrongcode.com/pagead/wrongcode.js">
    </script>
    <!-- Google Adsense -->
    </div>
    <div style="width:200px;height:40px;border:1px solid red;">inner html 4</div>
    <div>这里是页面最重要的内容,您每次打开该页面,均希望该部分内容无论如何可以正常显示。</div>
    <div>这里是页面的最底端</div>
</body>
</html>































修复页面代码:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <title>精巧软件 <A href="http://www.oldtool.netwww.oldtool.net</title>
</head>
<body>
    <script language="javascript" type="text/javascript">>
    // 按照 期望的次序 排列每个 div 的 Id.
    var arr1=new Array("div3","div2","div4","div1");
    //var arr1=new Array("if3","if2","if4","if1");
    // 期望 次序  div 中的内容.
    var arr2=new Array("换成你期望的内容。","inner html 2","inner html 4","inner html 1");
    //var arr2=new Array("3.html","2.html","4.html","1.html");
    // 期望 次序 中 iframe 的状态.
    var arr3=new Array("false","false","false","false");
    function showState()
    {
        // 判断 当前页面是否载入完毕
        if(window.document.body.readyState=="complete")
        {
            for(i=0;i<arr1.length;i++)
            {
                if(arr3[i]=="false")
                {
                    document.getElementById(arr1[i]).innerHTML=arr2[i];
                    arr3[i]="true";
                    return ;
                 }
            }
        }
    }
    // 每间隔 2 秒后调用如上方法,  当然,正常应用应该将此时间间隔设置小一些, 此处 仅 为了方便大家看效果
    setInterval("showState()",2000);
    </script>
    <div>这里是页面的最顶端内容。</div>
    <div>如下的 div1 div2 div3 div4 全部延时加载。 当前页面中的最重要内容不会因 div1 div2 div3 div4 内容的损坏,而不能正常访问。</div>
    <div style="width:200px;height:40px;border:1px solid red;">loading...</div>
    <div style="width:200px;height:40px;border:1px solid red;">loading...</div>
    <div style="width:200px;height:40px;border:1px solid red;">loading...</div>
    <div style="width:200px;height:40px;border:1px solid red;">loading...</div>
    <div>这里是页面最重要的内容,您每次打开该页面,均希望该部分内容无论如何可以正常显示。</div>
    <div>这里是页面的最底端</div>
</body>
</html>













































  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值