首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

动态加载JS的形式

2012-11-01 
动态加载JS的方式1.使用AJax技术动态加载JS文件?function ajaxRequest(filename){try{ajaxreq new XMLHt

动态加载JS的方式

1.使用AJax技术动态加载JS文件

?

function ajaxRequest(filename){    try{      ajaxreq = new XMLHttpRequest(); // alert("rigth");       }catch(error)   {     try{            ajaxreq = new ActiveXObject("Microsoft.XMLHTTP");  }catch(error) {   alert("error");   return false; }   }   ajaxreq.open("GET",filename);   ajaxreq.onreadystatechange = ajaxResponse;   ajaxreq.send(null);}function ajaxResponse(){   if(ajaxreq.readyState !=4)   {      //alert("!=4");     return;   }    if(ajaxreq.status == 0)   //如果读取本地JS文件,ajax没有发送http请求,返回的status == 0时代表请求完成。   {             IncludeJS("GPS","js/GPS.js", ajaxreq.responseText);    }   else    {     alert("Request failed:"+ ajaxreq.status);    }      return true;}function IncludeJS(sid,fileUrl, source) {      var element = document.getElementById(sid);     var head = document.getElementsByTagName('head').item(0);       if(element) {            head.removeChild(element);   }      if (( source != null )){    var oHead = document.getElementsByTagName('head').item(0);         var oScript = document.createElement( "script" );         oScript.language = "javascript";         oScript.type = "text/javascript";         oScript.id = sid;        oScript.defer = true;         oScript.text = source; //alert("oScript.text:" + oScript.text);        oHead.appendChild( oScript );          }} 

?2. 动态加载script标记

?

function LoadJS(){    var id = "Route";    var script = document.createElement("script");     script.id = id;     script.type = "text/javascript"; script.src = "http://domain/SmartLib/TestServlet";    if (callback)     {          script.onload = script.onreadystatechange = function()         {             script.onreadystatechange = script.onload = null;             callback();         }; }    var head = document.getElementsByTagName('head').item(0);     head.appendChild (script); }function callback(){//解析返回的数据}

?

注: 在IE下,readyState的值可能为一下几个:

"uninitialized"--原始状态

"loading" -- 下载数据中

"loaded" -- 下载完成

"interactive"-- 还未执行完毕

"complete" --脚本执行完毕

在IE中可以通过script.onreadystatechange = function(){}捕获状态的变化,在function中,通过script.readyState的状态来做相应的处理。

但是,在Firefox中,则没有script.readyState属性,一般通过script.onload = function(){}来动态加载script.

热点排行