蚂蚁文库
换一换
首页 蚂蚁文库 > 资源分类 > DOC文档下载
 

如何确保javascript的执行顺序之实战篇.doc

  • 资源ID:619387       资源大小:47.00KB        全文页数:7页
  • 资源格式: DOC        下载权限:游客/注册会员    下载费用:8积分 【人民币8元】
快捷注册下载 游客一键下载
会员登录下载
三方登录下载: 微信快捷登录 QQ登录  
下载资源需要8积分 【人民币8元】
邮箱/手机:
温馨提示:
支付成功后,系统会自动生成账号(用户名和密码都是您填写的邮箱或者手机号),方便下次登录下载和查询订单;
支付方式: 微信支付    支付宝   
验证码:   换一换

 
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,既可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰   

如何确保javascript的执行顺序之实战篇.doc

如何确保JAVASCRIPT的执行顺序之实战篇我曾在文章如何在多个页面使用同一个HTML片段续的最后提到JAVASCRIPT顺序执行的特性。虽然现代浏览器可以并行的下载JAVASCRIPT(部分浏览器),但考虑到JAVASCRIPT的依赖关系,他们的执行依然是按照引入顺序进行的。1引言我曾在文章如何在多个页面使用同一个HTML片段续的最后提到JAVASCRIPT顺序执行的特性。虽然现代浏览器可以并行的下载JAVASCRIPT(部分浏览器),但考虑到JAVASCRIPT的依赖关系,他们的执行依然是按照引入顺序进行的。为了更好的测试这个过程,我写了一个简单的HTTP处理程序页面SERVICEASHX,它可以接受两个参数1FILE,需要返回文件的服务器端路径。2DELAY,延迟一定时间后再返回本次HTTP请求(毫秒)。一个典型的页面比如/SERVICEASHXFILEJS/JQUERYUIJSIFSTRINGISNULLOREMPTYCONTEXTREQUEST“DELAY“{DELAYCONVERTTOINT32CONTEXTREQUEST“DELAY“}IFDELAY0{SYSTEMTHREADINGTHREADSLEEP1000}STRINGFILEPATHCONTEXTREQUEST“FILE“TOSTRINGSTRINGFILECONTENTSTRINGEMPTYUSINGSTREAMREADERSRNEWSTREAMREADERCONTEXTSERVERMAPPATHFILEPATH{FILECONTENTSRREADTOEND}IFFILEPATHENDSWITH“JS“{CONTEXTRESPONSECONTENTTYPE“APPLICATION/XJAVASCRIPT“}ELSE{CONTEXTRESPONSECONTENTTYPE“TEXT/PLAIN“}CONTEXTRESPONSEWRITEFILECONTENT}2通过SCRIPT标签直接引入JAVASCRIPT(TEST1HTM)首先我们分析下在标签中顺序引入JAVASCRIPT的情况。TEST1HTM的页面源代码如下复制代码代码如下ALERTTYPEOFJQUERYUI我们分别在各种浏览器中测试这个例子TEST1HTM通过SCRIPT标签直接引入JAVASCRIPTFIREFOX36IE8CHROME10SAFARI4OPERA11可以看出各个主流浏览器的行为一致。虽然JQUERYUI在服务器延迟了2秒钟再返回,但是后引入的内联JAVASCRIPT还是等待了2秒,等前面引入的JAVASCRIPT执行完毕才执行。这也是著名的JAVASCRIPT顺序执行的特性。3通过JAVASCRIPT添加SCRIPT标签(TEST3HTM)我们首先定义一个ADDSCRIPT函数,用来引入外部或者内联JAVASCRIPT。TEST3HTM的页面源代码如下复制代码代码如下FUNCTIONADDSCRIPTURL,INLINE{VARHEADDOCUMENTGETELEMENTSBYTAGNAME“HEAD“0VARSCRIPTDOCUMENTCREATEELEMENTSCRIPTSCRIPTTYPETEXT/JAVASCRIPTIFINLINE{SCRIPTTEXTURL}ELSE{SCRIPTSRCURL}HEADAPPENDCHILDSCRIPT}FUNCTION{ADDSCRIPT/SERVICEASHXFILEJS/JQUERYUIJSADDSCRIPTALERTTYPEOFJQUERYUI,TRUE}我们分别在各种浏览器中测试这个例子TEST3HTM通过JAVASCRIPT添加标签FIREFOX36IE8CHROME10SAFARI4OPERA11可见,通过JAVASCRIPT在DOM加载完毕后再引入外部或者内联JAVASCRIPT时,FIREFOX和OPERA的行为一致,能够确保JAVASCRIPT的执行顺序和引入顺序一致。但是IE8,CHROME,SAFARI却不能保证这个执行顺序。虽然各种浏览器在确保执行顺序方面不尽相同,不过这时的最大好处是多个JAVASCRIPT文件能够并行下载,这在所有浏览器中行为一致。当然这不是这篇文章的主题,可以GOOGLE更多细节。如何解决各个浏览器的不一致性,下面提供了两个解决方案4方案一,如何在动态添加SCRIPT标签时确保执行顺序有时页面逻辑要求我们必须通过上面的方式动态执行JAVASCRIPT,那么如何确保所有浏览器下的执行顺序(目前只有FIREFOX和OPERA确保执行顺序)。其实解决方案很简单,我们为函数执行添加一个COMPLETE的回调函数就行了。下面的TEST4HTM给出了具体的解决方案复制代码代码如下FUNCTIONADDSCRIPTURL,INLINE,CALLBACK{VARHEADDOCUMENTGETELEMENTSBYTAGNAME“HEAD“0VARSCRIPTDOCUMENTCREATEELEMENTSCRIPTSCRIPTTYPETEXT/JAVASCRIPTIFINLINE{SCRIPTTEXTURL}ELSE{SCRIPTSRCURLSCRIPTONLOADSCRIPTONREADYSTATECHANGEFUNCTION{IFSCRIPTREADYSTATE||SCRIPTREADYSTATELOADED||SCRIPTREADYSTATECOMPLETE{IFCALLBACK{CALLBACK}SCRIPTONLOADSCRIPTONREADYSTATECHANGENULL}}}HEADAPPENDCHILDSCRIPTIFINLINE}}FUNCTION{ADDSCRIPT/SERVICEWWWVISA158COMASHXFILEJS/JQUERYUIJS,TRUE}}此时所有浏览器中的行为一致TEST4HTM通过回调函数解决动态添加JAVASCRIPT的顺序问题FIREFOX36IE8CHROME10SAFARI4OPERA115方案二,使用JQUERY的HTML函数动态添加JAVASCRIPTJQUERY的HTML函数用来更新一个DOM片段,我们可以很方便的通过这个函数来动态加载JAVASCRIPT,请看示例TEST2HTM复制代码代码如下FUNCTION{CONTAINERHTMLALERTTYPEOFJQUERYUI}此时,各个浏览器中的行为一致TEST2HTM通过JQUERY的HTML函数解决动态添加JAVASCRIPT的顺序问题FIREFOX36IE8CHROME10SAFARI4OPERA116后记为什么JQUERY的HTML函数能够确保动态加载JAVASCRIPT的执行顺序呢我们知道通过简单的INNERHTML更新DOM节点,是不会让其中的JAVASCRIPT的执行,我们可以简单的把这个例子的源代码改成CONTAINER0INNERHTMLALERTTYPEOFJQUERYUI这种情况下JQUERYUI根本不会加载。那么JQUERY是如果做到的呢我们先来简单回顾下HTML源代码(

注意事项

本文(如何确保javascript的执行顺序之实战篇.doc)为本站会员(马老师)主动上传,蚂蚁文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知蚂蚁文库(发送邮件至2303240369@qq.com或直接QQ联系客服),我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们


网站客服QQ:2303240369

copyright@ 2017-2027 mayiwenku.com 

网站版权所有  智慧蚂蚁网络

经营许可证号:ICP备2024020385号



收起
展开