动态加载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.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值