目前网站之间相互调用的情况越来越多,比如 需要调用某个第三方提供的一些接口(天气预报),或者是第三方提供的广告......
但是出于各种原因(网络故障、服务器故障、软件故障......)常常会发生第三方的相应页面不能访问的情况,而直接导致自己网站不能正常访问,或者访问速度比较慢。
比如:某个网站为 头、内容、底 结构,在网站的头部放置了第三方提供的广告,但是出于某种原因,第三方的服务不能正常访问了,直接导致的情况就是,整个网站 头部广告 以下的部分均不能正常访问(或者要过很久以后才能打开,昨天的台湾大地震,导致了 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>精巧软件 www.oldtool.net</title>
</head>
<body>
<div>这里是页面的最顶端内容。</div>
<div>如下的 div1 div2 div3 div4 可以放置任何第三方的内容,比如广告。</div>
<div id="div1" style="width:200px;height:40px;border:1px solid red;">inner html 1</div>
<div>说明:此处的 宽、高,不一定需要提前设置,可以将此 Container 的宽、高根据内部的内容自适应。</div>
<div id="div2" style="width:200px;height:40px;border:1px solid red;">inner html 2</div>
<div>说明:div3中的内容不能正常访问,直接导致其下最重要的内容不能正常打开,或者要过很久以后才可以正常打开。</div>
<div id="div3" 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 id="div4" 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>精巧软件 www.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 id="div1" style="width:200px;height:40px;border:1px solid red;">loading...</div>
<div id="div2" style="width:200px;height:40px;border:1px solid red;">loading...</div>
<div id="div3" style="width:200px;height:40px;border:1px solid red;">loading...</div>
<div id="div4" style="width:200px;height:40px;border:1px solid red;">loading...</div>
<div>这里是页面最重要的内容,您每次打开该页面,均希望该部分内容无论如何可以正常显示。</div>
<div>这里是页面的最底端</div>
</body>
</html>
-----------------------------------------------------
# js中SetInterval与setTimeout用法
JS里设定延时:
使用SetInterval和设定延时函数setTimeout 很类似。setTimeout 运用在延迟一段时间,再进行某项操作。
setTimeout("function",time) 设置一个超时对象
setInterval("function",time) 设置一个超时对象
SetInterval为自动重复,setTimeout不会重复。
clearTimeout(对象) 清除已设置的setTimeout对象
clearInterval(对象) 清除已设置的setInterval对象
分享到:
相关推荐
页面加载顺序对于用户体验至关重要,因为它直接影响到用户首次看到网页内容的速度和形式。在网页开发中,浏览器遵循一定的规则来解析HTML、CSS和JavaScript文件,从而构建出完整的页面。本篇文章将详细探讨页面加载...
一般来说,listener 的加载顺序是在 filter 和 servlet 之前的,因为 listener 需要监听 ServletContext 的事件,以便实现对 Web 应用的监听和控制。filter 的加载顺序是在 servlet 之前的,因为 filter 需要对请求...
了解Struts2配置文件的加载顺序对于优化应用性能和解决配置问题至关重要。 Struts2的配置主要分布在以下几个文件中: 1. **struts-default.xml**:这是Struts2的核心配置文件,位于`struts2-core.jar`库的`/org/...
Vue的加载顺序探讨 Vue 的加载顺序探讨是 Vue.js 框架中一个非常重要的概念,对于开发者来说,了解 Vue 的加载顺序可以帮助他们更好地编写代码和调试问题。本文将详细介绍 Vue 的加载顺序探讨,包括 created 生命...
了解JavaScript加载顺序对于优化页面性能和解决脚本依赖关系至关重要。正确地管理脚本加载可以帮助减少页面加载时间,提供更好的用户体验。通过使用异步、延迟加载和模块化等技术,开发者可以更加灵活地控制脚本的...
通过深入理解这些事件,开发者能够更好地控制页面的行为,提高用户体验,同时减少潜在的编程错误。在实际开发中,根据需求适当地在不同的事件中编写代码,可以有效地提高代码的可维护性和性能。
### JSP页面中的代码执行加载顺序详解 #### 一、引言 JSP(Java Server Pages)是一种基于Java技术的动态网页技术标准,它通过将动态生成的内容嵌入到静态HTML页面中,使得Web应用程序能够生成动态变化的内容。在...
了解JSP页面中的代码执行加载顺序对于Web开发人员来说至关重要,因为它影响页面的表现和功能的实现。 JSP页面中的代码主要分为三部分:Java代码、JSP标签和脚本以及客户端的JavaScript和HTML代码。这些部分的执行...
理解Web.xml的加载顺序对于开发和调试Web应用程序至关重要。 首先,当Web应用程序启动时,Web容器(如Tomcat、Jetty等)会读取web.xml文件。在这个过程中,它会首先处理`<listener>`和`<context-param>`这两个元素...
理解`web.xml`的加载顺序和各个节点的作用对于开发和维护高质量的Web应用至关重要。 1. **加载顺序**: - 当应用服务器启动并加载Web应用程序时,首先读取`web.xml`文件。 - 首先解析的是`<context-param>`节点,...
这种技术允许开发者控制不同页面区域的加载顺序和速度,使得关键内容可以更快地呈现给用户,同时其他非关键内容在后台逐步加载。 首先,我们来看**jQuery**,它是一个广泛使用的JavaScript库,简化了JavaScript的...
Vue实践分享(三)在实际项目的开发过程中,经常会遇到页面还没渲染完成而...以上这篇基于Vue渲染与插件的加载顺序的问题详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持软件开发网。
模板的主要功能在于生成HTML代码,并控制页面上显示的内容。值得注意的是,模板文件不仅限于HTML,还可以包含CSS、JavaScript等静态资源,以及通过模板语言动态生成的内容。具体来说,模板文件由以下两部分组成: 1...
在网页加载过程中,为了提供更好的用户体验,开发者经常使用JS来实现页面等待效果,即在内容完全加载之前展示一个等待动画或者提示,让用户知道页面正在努力加载。 "js加载页面等待效果"主要涉及到以下几个关键知识...
本资源包含两款不同的页面预加载进度动画效果,旨在为网页加载增添动态美感,提高用户体验。 首先,我们来看第一款动画效果。它采用了圆形进度条的设计,这种设计简洁而直观,能够清晰地展示加载的进度。圆形进度条...
本文主要探讨了JavaScript加载顺序与执行原理,以及如何通过优化策略提升性能。 首先,当浏览器遇到`<script>`标签时,会暂停页面的渲染,先下载并执行脚本。这种行为会导致页面呈现的阻塞,特别是在脚本数量较多或...
- **控制加载顺序**:根据需要,可以通过JavaScript控制各个IFRAME的加载顺序,实现逐屏加载。 ### 4. 示例代码 以下是一个简单的示例,展示了如何使用JavaScript和IFRAME实现分屏加载: ```javascript // 创建...
在Firefox和Opera中,由于它们按照加载顺序执行,所以先弹出`test.js`中的值,然后是内联脚本中的值。而在IE中,由于`document.write()`的特性,可能会导致`tmpStr`未定义的错误。 为了解决IE中的问题,我们可以...
在“jQuery页面区域预加载代码”中,开发者可以利用jQuery的事件绑定、动画控制等功能,实现对页面区块的逐个加载和展示。 在压缩包内的"说明.htm"文件中,通常会包含预加载代码的详细使用说明和示例。开发者可以...