千家信息网

怎么用ajax动态加载需要的js文件

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章将为大家详细讲解有关怎么用ajax动态加载需要的js文件,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。前段时间,用了下dojo,里面的dojo.requir
千家信息网最后更新 2026年11月03日怎么用ajax动态加载需要的js文件

这篇文章将为大家详细讲解有关怎么用ajax动态加载需要的js文件,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

  前段时间,用了下dojo,里面的dojo.require的功能很不错,一看代码,晕了,一大堆东西,唉~还是自己写个简单点的,dojo.require可以引入包,我就只做一个导入js文件的。

  开始用的[xss_clean],执行顺序不对了,这是在后面进行导入,而我们总是在前面执行中就需要导入的js,这样,执行中就会报"某某未定义",就是顺序问题了。

  接着,我就想用ajax同步(注意:不是异步)调用远程js文件,这里有个问题,就是我们要js文件的时候,不是用绝对路径,就是相对路径,用相对路径的话,以哪个为参照呢?可以用调用js的那个文件为参照,也可以以实现调用功能的js文件为参照,这里,我选择写个 js,实现按需调用其它js,参照也选它。经过一番修改,路径问题解决。但是,读取过来的数据中文会有乱码问题,好在我们做东西都用UTF-8(因为要国际化),所以这里避过了。

  远程js内容取到后,就要执行,用eval执行后,发现还是取不到远程js里定义的内容,怪了,猛alert一番后,发现执行eval的上下文范围有问题,我们要的是js在window对象中执行,嗯?window有什么方法没?一找,哈,有个window.execScript方法,ok,试一下,成功,yeah~后来发现在firefox下,不能用window.execScript,找了一下,用window.eval,用法和ie下的window.execScript类似。但是只用window.eval的时候,在ie下有时候会出问题,所以就两种一起用了。

  下面是实现远程js安调用的那个js:env.js,我已经习惯用oo写js了

 /**  * @author zxub 2006-06-01  * 状态信息显示类,用var Status=new function()定义,可以静态引用其中的方法  * 一般情况下为function Status(),这样不能静态引用其中的方法,需要通过对象来引用  */ var Status=new function() {   this.statusDiv=null;      /**    * 初始化状态显示层    */   this.init=function()   {     if (this.statusDiv!=null)     {       return;     }     var body = document.getElementsByTagName("body")[0];     var div = document.createElement("div");     div.style.position = "absolute";     div.style.top = "50%";     div.style.left = "50%";     div.style.width = "280px";     div.style.margin = "-50px 0 0 -100px";         div.style.padding = "15px";     div.style.backgroundColor = "#353555";     div.style.border = "1px solid #CFCFFF";     div.style.color = "#CFCFFF";     div.style.fontSize = "14px";     div.style.textAlign = "center";     div.id = "status";     body.appendChild(div);     div.style.display="none";     this.statusDiv=document.getElementById("status");   }      /**    * 设置状态信息    * @param _message:要显示的信息    */     this.showInfo=function(_message)   {        if (this.statusDiv==null)     {       this.init();     }      this.setStatusShow(true);     this.statusDiv[xss_clean] = _message;       }       /**    * 设置状态层是否显示    * @param _show:boolean值,true为显示,false为不显示    */    this.setStatusShow=function(_show)   {        if (this.statusDiv==null)     {       this.init();     }      if (_show)     {       this.statusDiv.style.display="";     }     else     {       this.statusDiv[xss_clean]="";       this.statusDiv.style.display="none";     }   } } /**  * @author zxub  * 用于存放通道名称及通信对象的类,这样可以通过不同通道名称来区分不同的通信对象  */ function HttpRequestObject() {   this.chunnel=null;   this.instance=null; } /**  * @author zxub  * 通信处理类,可以静态引用其中的方法  */ var Request=new function() {   this.showStatus=true;      //通信类的缓存   this.httpRequestCache=new Array();      /**    * 创建新的通信对象    * @return 一个新的通信对象    */   this.createInstance=function()   {     var instance=null;     if (window.XMLHttpRequest)     {       //mozilla       instance=new XMLHttpRequest();       //有些版本的Mozilla浏览器处理服务器返回的未包含XML mime-type头部信息的内容时会出错。因此,要确保返回的内容包含text/xml信息       if (instance.overrideMimeType)       {         instance.overrideMimeType="text/xml";       }     }     else if (window.ActiveXObject)     {       //IE       var MSXML = ['MSXML2.XMLHTTP.5.0', 'Microsoft.XMLHTTP', 'MSXML2.XMLHTTP.4.0', 'MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP'];       for(var i = 0; i < MSXML.length; i++)       {         try         {           instance = new ActiveXObject(MSXML[i]);           break;         }         catch(e)         {                   }       }     }     return instance;   }      /**    * 获取一个通信对象    * 若没指定通道名称,则默认通道名为"default"    * 若缓存中不存在需要的通信类,则创建一个,同时放入通信类缓存中    * @param _chunnel:通道名称,若不存在此参数,则默认为"default"    * @return 一个通信对象,其存放于通信类缓存中    */   this.getInstance=function(_chunnel)   {     var instance=null;     var object=null;     if (_chunnel==undefined)//没指定通道名称     {       _chunnel="default";     }     var getOne=false;     for(var i=0; i');     }   } } /**  * ajax调用远程页面后,远程页面中script块未执行的处理  */ function reloadJs(_language) {   var _c=document.getElementsByTagName("SCRIPT");   for (var i=0;i<_c.length;i++)   {     if (_c[i].src)     {       var _s=document.createElement("script");       _s.type="text/javascript";       _s.src=_c[i].src;       //为兼容firefox不用_c[0].insertAdjacentElement("beforeBegin",_s)       _c[0][xss_clean].insertBefore(_s,_c[0]);             _c[i][xss_clean].removeChild(_c[i]);     }     else if (_c[i].text)     {       if (_language!=undefined)       {         if (window.execScript)         {           window.execScript(_c[i].text,_language);         }         else         {           window.eval(_c[i].text,_language);         }       }       else       {         if (window.execScript)         {           window.execScript(_c[i].text);         }         else         {           window.eval(_c[i].text);         }       }     }   } }   

需要引用别的js的时候,就加上如Env.require("cookie.js"),或Env.require("/common/cookie.js"),是用相对路径还是绝对路径就看喜好了,Env.require可用在页面模板中,也可用在js文件中,但一定要保证执行时env.js被显式引入。多次Env.require同一个js(不管用相对还是绝对),只有第一次会加载,所以不会重复。

关于"怎么用ajax动态加载需要的js文件"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

处理 对象 通信 文件 路径 信息 通道 名称 缓存 状态 问题 内容 参数 方法 浏览器 页面 检查 浏览 函数 时候 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 重生之互联网科技帝国 互联网科技官网 厦门中拓互联网络科技有限公司 互联网与新科技 米客互联网科技 火传媒上海互联网科技 成都玖崟互联网科技有限公司乐商圈怎么样 农村开互联网科技讲堂 江苏南京365互联网科技 小米互联网科技园设置 互联网大会黑科技排名 和信科技工业互联网 恒生互联网科技业指数调整周期 中科明德北京互联网科技 美国互联网科技公司 新氧科技和美国互联网有关系吗 福建互联网展示科技馆设计 安徽九吞吴互联网科技有限公司 瑞安市蟠桃会互联网科技有限公司 六子台科技互联网展会 上海喔噻互联网科技有限公司 互联网科技咨询 卫星互联网科技股票 青海科技产业互联网发展 民营互联网公司国防科技 如何创新互联网科技 企晟互联网信息科技有限公司 洛阳共同富裕互联网科技有限公司 四川慕妮娅互联网科技有限公司 互联网科技股为什么大涨
0