AutoCAD 3DMAX C语言 Pro/E UG JAVA编程 PHP编程 Maya动画 Matlab应用 Android
Photoshop Word Excel flash VB编程 VC编程 Coreldraw SolidWorks A Designer Unity3D
 首页 > JavaScript

完美解决JS文件页面加载时的阻塞问题

51自学网 http://www.wanshiok.com
页面加载,js阻塞

关于页面加载时的时间消费,许多书中都做出了介绍,也提出了很多种方法。本文章就详细介绍XHR注入。

概述:JS分拆的方法

1.XHR注入:就是用ajax异步请求同域包含脚本的文件,然后将返回的字符串转化为脚本使用,该方法不会造成页面渲染和onload事件的阻塞,因为是异步处理,推荐使用。

2.iframe注入:加载一个iframe框架,通过使用iframe框架中的脚本来避免src方式加载脚本的阻塞,但是iframe元素开销较大,不推荐。

3.DOM注入:就是创建script元素,通过制定该元素的src并放入DOM树中,根据该语句书写的文字不同,会造成渲染或onload事件的阻塞。

4. document.write方法:在JS脚本中使用document.write('<script>XXX</script>');这种方法简单粗暴,但是它仍然会造成阻塞,所改变的只是什么时候阻塞。

详细介绍:

第一步:创造ajax函数:1建立XMLHTTPRequest或ActiveXObject对象 2.ajax对象的open方法 3.ajax对象的send方法 4.改写onreadystatechange事件,判断status(200)和readyState(4)属性值,对请求数据类型操作。

第二步:用ajax函数请求一个JS文件。

第三步:两个分支:第一种:拿来主义,eval(请求返回字符串);执行了JS中的函数,达到目的。

第二种:创建script对象,利用该对象的text属性赋值 返回字符串 方式,达到目的。

看代码:

实例JS文件:创建一个100X100的黑色div,并加载到指定元素中。

function test() {  oDiv = document.createElement('div');  oDiv.style['width'] = '100px';  oDiv.style['height'] = '100px';  oDiv.style['background'] = 'black';  document.getElementById('header').appendChild(oDiv);}test();

页面使用该JS文件

<html xmlns="http://www.w3.org/1999/xhtml"><head>  <title></title>  <style type="text/css">   *{ margin:0; padding:0;}  </style></head><body> <div id="header" style=" height:150px; background-color:Red;"></div> <div id="init"> <script type="text/javascript">   //Ajax获取字符串function Ajax(Method,url,funcSucc,funcFalse) {  if (XMLHttpRequest)    var oAjax = new XMLHttpRequest();  else {    var oAjax = new ActiveXObject('Microsoft.XMLHTTP');  }  oAjax.open(Method, url, true);  oAjax.send();  oAjax.onreadystatechange = function () {    if (oAjax.readyState == 4) {      if (oAjax.status == 200) {        var str = oAjax.responseText;        funcSucc(str);      }      else {        funcFalse();      }    }  };   Ajax('GET', 'javascript/load.js', function (str) {     eval(str); //    var oScript = document.createElement('script');//     oScript.text = str;//     document.getElementsByTagName('head')[0].appendChild(oScript);   }, function () {     alert('失败');   });      </script> </div></body></html>

以上这篇完美解决JS文件页面加载时的阻塞问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持wanshiok.com。


页面加载,js阻塞  
上一篇:教你一步步用jQyery实现轮播器  下一篇:前端js弹出框组件使用方法