收藏 分销(赏)

动态加载js.doc

上传人:xrp****65 文档编号:8970976 上传时间:2025-03-09 格式:DOC 页数:5 大小:29KB 下载积分:10 金币
下载 相关 举报
动态加载js.doc_第1页
第1页 / 共5页
动态加载js.doc_第2页
第2页 / 共5页


点击查看更多>>
资源描述
动态加载js.txt等余震的心情,就像初恋的少女等情人,既怕他不来,又怕他乱来。 听说女人如衣服,兄弟如手足,回想起来,我竟然七手八脚地裸奔了二十多年!今天心情不好,我只有四句话想说,包括这句和前面的两句,我的话说完了!几种动态加载JS脚本的方法 已有 277 次阅读 2010-03-12 08:36 标签: 加载 脚本 动态 能实现动态加载javascript脚本的方法有好些,主要介绍几种: 1、直接document.write <script language=“javascript”> document.write(“<script src=’test.js’><\/script>”); </script> 2、动态改变已有script的src属性 <script src=” id=“s1″></script> <script language=“javascript”> s1.src=“test.js” </script> 3、动态创建script元素 <script> var oHead = document.getElementsByTagName(‘HEAD’).item(0); var oScript= document.createElement(“script”); oScript.type = “text/javascript”; oScript.src=“test.js”; oHead.appendChild( oScript); </script>   这三种方法都是异步执行的,也就是说,在加载这些脚本的同时,主页面的脚本继续运行,如果用以上的方法,那下面的代码将得不到预期的效果。 要动态加载的JS脚本:a.js,以下是该文件的内容。 var str = “中国”; alert( “这是a.js中的变量:” + str ); 主页面代码: <script language=“JavaScript”> function LoadJS( id, fileUrl ) { var scriptTag = document.getElementById( id ); var oHead = document.getElementsByTagName(‘HEAD’).item(0); var oScript= document.createElement(“script”); if ( scriptTag ) oHead.removeChild( scriptTag ); oScript.id = id; oScript.type = “text/javascript”; oScript.src=fileUrl ; oHead.appendChild( oScript); } LoadJS( “a.js” ); alert( “主页面动态加载a.js并取其中的变量:” + str ); </script> 上述代码执行后 a.js 的 alert 执行并弹出消息, 但是 主页面产生了错误,没有弹出对话框。原因是 ’str’ 未定义,为什么呢?因为主页面在取 str 的时候 a.js 并没有完全加载成功。遇到需要同步执行脚本的时候,可以用下面的第四种方法。 4、原理:用XMLHTTP取得要脚本的内容,再创建 Script 对象。 注意:a.js必须用UTF8编码保存,要不会出错。因为服务器与XML使用UTF8编码传送数据。 主页面代码: <script language=“JavaScript”> function GetHttpRequest() { if ( window.XMLHttpRequest ) // Gecko return new XMLHttpRequest() ; else if ( window.ActiveXObject ) // IE return new ActiveXObject(“MsXml2.XmlHttp”) ; } function AjaxPage(sId, url){ var oXmlHttp = GetHttpRequest() ; oXmlHttp.OnReadyStateChange = function() { if ( oXmlHttp.readyState == 4 ) { if ( oXmlHttp.status == 200 || oXmlHttp.status == 304 ) { IncludeJS( sId, url, oXmlHttp.responseText ); } else { alert( ‘XML request error: ’ + oXmlHttp.statusText + ‘ (‘ + oXmlHttp.status + ‘)’ ) ; } } } oXmlHttp.open(‘GET’, url, true); oXmlHttp.send(null); } function IncludeJS(sId, fileUrl, source) { if ( ( source != null ) && ( !document.getElementById( sId ) ) ){ 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; oHead.appendChild( oScript ); } } AjaxPage( “scrA”, “b.js” ); alert( “主页面动态加载JS脚本。”); alert( “主页面动态加载a.js并取其中的变量:” + str ); </script> 如果用jquery来加载实现,代码非常简洁: function loadJs(file){ var head = $(‘head’).remove(‘#loadScript’); $(“<scri”+”pt>”+”</scr”+”ipt>”).attr({src:file,type:’text/javascript’,id:’load’}).appendTo(head); } 够简单把!如果在浓缩以下你甚至可以用一行代码全部搞定: $(“<scri”+”pt>”+”</scr”+”ipt>”).attr({src:file,type:’text/javascript’,id:’load’}).appendTo($(‘head’).remove(‘#loadScript’)); jQuery的链式代码就是强大!
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服