当前位置: 首页 > news >正文

怎么提高网站关键词排名廊坊seo快速排名

怎么提高网站关键词排名,廊坊seo快速排名,58同城泰安,网站源码 带数据重新温习了下这段内容,发现各个浏览器的兼容性真的是搞大了头,处理起来很是麻烦。 现在现总结下并行加载多个js的方法: 1,对于动态createElement(script)的方式,对所有浏览器都是异步并行加载的。这里所说的并行不仅仅…

重新温习了下这段内容,发现各个浏览器的兼容性真的是搞大了头,处理起来很是麻烦。

现在现总结下并行加载多个js的方法:

  1,对于动态createElement('script')的方式,对所有浏览器都是异步并行加载的。这里所说的并行不仅仅指的是

    js并行加载,也包括js和其他资源比如图片,iframe的加载。但是此种方式在Firefox的2.0 3.0 3.1版本和opera 9.63

    下是可以顺序执行的。但是由于Kyle的提议,现代浏览器都可以通过对动态创建的script元素设置属性async=false来使

    js顺序执行。

  2,可以通过document.write('<script>')的方式来并行加载(IE,现代浏览器)和顺序执行。

  3,通过xhr加载js。但是有了同源的限制,因此对于外部js文件或者cdn上的js就无能为力。

 

已经有些大牛比如之前提到的Kyle已经提供了兼容个浏览器的标准库,项目名称是 LABjs。

自己写了一个简单的插件,目前并没有在IE6,7上测试。

  

        if(!asyncHelper) var asyncHelper = {};asyncHelper.cache = []; //存储获取到的js对象
asyncHelper.createAjax = (function(){if('XMLHttpRequest' in window){return function(){return new XMLHttpRequest();}}else{var i= 0,len, fns = [function(){return new ActiveXObject('Microsoft.XMLHTTP')},function(){return new ActiveXObject('Msxml2.XMLHTTP')},function(){return new ActiveXObject('Msxml2.XMLHTTP.3.0')},function(){return new ActiveXObject('Msxml2.XMLHTTP.6.0')}];for(len = fns.length;i<len;i++){try{fns[i]();return fns[i];break;}catch (e){}}}})();//功能函数,异步xhr加载js,并行无序加载js和其他资源,需要进行顺序控制;而且受同源限制,//无法使用cdn或外部引用jsasyncHelper._loadJsWithXHR = function(url,fn,inOrder){inOrder = inOrder || true; //默认顺序加载var jsObj = {file: null,isLoaded:false,callback: fn},xhr,i,len;asyncHelper.cache.push(jsObj);xhr = this.createAjax();xhr.onreadystatechange = function(){if(xhr.readyState == 4){try{if(xhr.status >=200 && xhr.status < 300 || xhr.status == 304){jsObj.file = xhr.responseText; // 返回的js存入对象中if(inOrder){for(i=0,len=asyncHelper.cache.length;i<len;i++){if(!asyncHelper.cache[i].file){//避免重复解析已加载过得js文件//从缓冲汇总删除已经加载的文件if(i>0){asyncHelper.cache.splice(0,i);}break;}else{//Function相当于全局eval,不会改变作用域链new Function(asyncHelper.cache[i].file)();fn && fn(); //执行回调函数if(i == len-1){asyncHelper.cache = []; //清空缓存
                                        }}}}else{if(jsObj.file){eval(jsObj.file);fn();}}}}catch (loadError){setTimeout(function(){throw(new Error('loading with XHR response error--' + loadError))},0);}}};xhr.open('get',url);xhr.setRequestHeader('X-Request-With','XMLHttpRequest');xhr.send(null);};//通过创建script元素来异步加载js,支持跨域。在firefox,opera下也是顺序加载。asyncHelper._loadJsWithDOMElement = function(url,fn){var dom = document.createElement('script');dom.type = 'application/javascript';dom.async = false;dom.src = url;dom.isloaded = false;//执行回调函数,IE下使用onreadystatechange,w3c使用onloadif('onload' in dom){dom.onload = fn;}else{dom.onreadystatechange = function(){if((dom.readyState == 'loaded' || dom.readyState == 'complete') &&!dom.isloaded){fn();dom.isloaded = true;}}}document.getElementsByTagName('head')[0].appendChild(dom);}//通过document.write插入script来进行并行加载脚本。gte IE8以及opera支持。//全部浏览器支持此种方式的顺序加载jsasyncHelper._loadJsWithScriptTag = function(url,fn){document.writeln('<script type="application/javascript" src="' +url +'"><\/script>');//给window绑定onload事件if(window.addEventListener){window.addEventListener('load',fn,false);}else{window.attachEvent('onload',function(){fn.call(this,window.event);})}}//暴露外部接口,加载单个js文件asyncHelper.loadScript = function(url,fn){this._loadJsWithDOMElement(url,fn);}//加载多个js文件asyncHelper.loadScripts = function(urls,fn){function isSameDomain(url){var domain = document.location.protocol + "//" +document.location.hostname + "/";if(url.indexOf('http') !== -1 || url.indexOf('https') !== -1){if(url.indexOf(domain) !== -1){return true;}return false;}return true;}//如果url同源,则使用xhr加载var i,len,flag,loadMethod;for(i=0,len=urls.length;i<len;i++){if(flag = isSameDomain(urls[i])) continue;else break;}//默认xhr加载loadMethod = asyncHelper._loadJsWithXHR;if(!flag){//firefox opera使用DomElement方式加载,确保顺序性和异步加载// 经测试,目前最新版本的Firefox亦不支持此特性。//Firefox 4为了更向HTML5标准看齐,一度在开发者版本中去掉了对动态创建<script>来加载js文件的执行顺序支持://<script> elements created using document.createElement() and inserted into a document now behave// according to the HTML5 specification by default. Scripts with the src attribute// execute as soon as available (without maintaining ordering) and scripts without// the src attribute execute synchronously.//Kyle向WebKit开发团队抗议,提了一个bug,最终得到了如他所愿的支持://To make script-inserted scripts that have the src attribute execute in the insertion order,// set .async=false on them.if(navigator.userAgent.toLowerCase().indexOf('firefox') != -1 || navigator.userAgent.toLowerCase().indexOf('opera') != -1)loadMethod = asyncHelper._loadJsWithDOMElement;elseloadMethod = asyncHelper._loadJsWithScriptTag;}for(i=0;i<len;i++){if(i == len - 1){loadMethod.call(asyncHelper,urls[i],fn);}else{loadMethod.call(asyncHelper,urls[i]);}}}// 示例代码  
asyncHelper.loadScripts(['http://libs.baidu.com/jquery/1.9.0/jquery.js','./a.js','./b.js'],function(){console.log('success')})

 

转载于:https://www.cnblogs.com/accordion/p/4147172.html

http://www.lbrq.cn/news/2563687.html

相关文章:

  • 网站编辑属于什么行业搜索引擎优化的方法有哪些?
  • 易趣网的网站架构电商培训机构有哪些哪家比较好
  • 磁力网站怎么做的源码社群营销是什么意思
  • 安阳网站推广公司广州专门做seo的公司
  • 杭州推荐网站建设团队新网站百度收录
  • asp怎么做网站适配seo百度关键词排名
  • wordpress内核文件夹重庆seo整站优化效果
  • 网站文字编辑怎么做六种常见的网站类型
  • 做暧小视频免费网站本地服务推广平台哪个好
  • 公司网站建设设计方案班级优化大师头像
  • 门户型网站建设方案成功的网络营销案例
  • 南京做网站公司地点网络赚钱推广
  • 可信网站认证必须做吧一级域名二级域名三级域名的区别
  • 微信链接的微网站怎么做希爱力双效片骗局
  • 小学学校网站设计模板手机系统优化工具
  • wordpress开发实战seo内部优化具体做什么
  • 在意派建设好网站后杭州优化seo公司
  • 南联网站建设推广营销型网站推广
  • 企业网站一般用什么框架做百度网盘搜索引擎盘多多
  • 网站开发逻辑黄页网络的推广
  • 做网站多少费用智慧软文网站
  • app 与网站网络营销软件条件
  • 江苏南京建设工程信息网站友情链接导航
  • 网站策划界面效果感受心得郑州seo外包阿亮
  • 美国网站建设网站seo优化怎么做
  • 铁岭市网站建设做优化关键词
  • 做电商的批发网站有哪些知名的seo快速排名多少钱
  • 怎样做免费网站建设抖音账号权重查询入口
  • 单页网站制作程序品牌营销方案
  • 商城网站建站系统源码西安网站建设网络推广
  • 我的世界进阶模组教程——物品(2)
  • 12:java学习笔记:多维数组1
  • 分布在背侧海马体CA1区域的位置细胞(place cells)对NLP中的深层语义分析的积极影响和启示
  • Java 学习笔记:常用类、String 与日期时间处理
  • 8.1IO进程线程——文件IO函数
  • Qt 开发 IDE 插件开发指南