转 - 动态载入及操作外部JS文件的几种方法(未测试)
2010-02-22 17:27
537 查看
No.1直接document.write <script language="javascript"> document.write("<script src='test.js'><\/script>"); </script> No.2动态改变已有script的src属性 <script src='' id="s1"></script> <script language="javascript"> s1.src="test.js" </script> No.3动态创建script元素 <script> var s2 = document.createElement("script"); s2.src="test.js" document.body.insertAdjacentElement("BeforeBegin",s2); </script>
function LoadObj(){ if (!document.getElementById) return; for (i=0; i<arguments.length; i++) { var file = arguments[i]; var fileref = "" if (loadedobjects.indexOf(file)==-1) { //Check to see if this object has not already been added to page before proceeding if (file.indexOf(".js")!=-1) { //If object is a js file fileref=document.createElement('script') fileref.setAttribute("type","text/javascript"); fileref.setAttribute("src", file); } else if (file.indexOf(".css")!=-1) { //If object is a css file fileref=document.createElement("link") fileref.setAttribute("rel", "stylesheet"); fileref.setAttribute("type", "text/css"); fileref.setAttribute("href", file); } } if (fileref != "") { document.getElementsByTagName("head").item(0).appendChild(fileref) loadedobjects+=file+" " //Remember this object as being already added to page } } };
Internet Explorer 5.5 和 Netscape 6 在动态载入外部文件方面与以前的版本有所区别,这里所说的“动态”是指:用document.write 来包含外部文件。假如你有一个外部文件如下: function printMessage() { alert("这是来自外部文件的信息!!:)"); } 现在你想用下面的方法动态载入: <SCRIPT LANGUAGE="JavaScript"> document.write('<SCRIPT LANGUAGE="JavaScript" SRC="exam.js"></SCRIPT>'); </SCRIPT> 现在,你如果当此文件刚载入你就按下面的方法去调用函数 printMessage() 的话,你将得到一个错误。 <SCRIPT LANGUAGE="JavaScript"> document.write('<SCRIPT LANGUAGE="JavaScript" SRC="exam.js"></SCRIPT>'); printMessage(); </SCRIPT> 其原因就是:IE5.5和NN6在解释主文件代码时不会等待外部文件完全载入完毕。正确的做法是在载入外部文件后立即关闭<script>: <SCRIPT LANGUAGE="JavaScript"> document.write('<SCRIPT LANGUAGE="JavaScript" SRC="exam.js"></SCRIPT>'); </SCRIPT> <SCRIPT LANGUAGE="JavaScript"> printMessage(); </SCRIPT>
<label id="w1">hloowowo</label> <button onclick="loadjs('test.js')">loadjs</button> <button style="display=false" id="j" value="alert" onclick="al(document.getElementById('w1').innerHTML)">jjjjjjjj</button> ///////////////////////////////////////////////////////////////////////////// <script language="JavaScript" type="text/javascript"> <!-- function JsLoader(){ this.load=function(url){ //获取所有的<scrcipt>标记 var ss=document.getElementsByTagName("script"); //判断指定的文件是否已经包含,如果已包含则触发onsuccess事件并返回 for(i=0;i<ss.length;i++) { if(ss[i].src && ss[i].src.indexOf(url)!=-1) { this.onsuccess(); return; } } //创建script结点,并将其属性设为为外联JavaScript文件 s=document.createElement("script"); s.type="text/javascript"; s.src="http://blog.bitscn.com/url"; //获取head结点,并将<script>插入到其中 var head=document.getElementsByTagName("head")[0]; head.appendChild(s); //获取对象自身的引用 var self=this; //对于IE浏览器,使用readystatechange事件判断是否载入成功 //对于其他浏览器,使用onload事件判断载入是否成功 s.onload=s.onreadystatechange=function() { //在此函数中this指针指的是s结点对象,而不是JsLoader实例, //所以必须用self来调用onsuccess事件,下同。 if(this.readyState && this.readyState=="loading") return; self.onsuccess(); } s.onerror=function(){ //如果发生错误,则删除插入的结点,并触发失败事件 head.removeChild(s); self.onfailure(); } }; //定义载入成功事件 this.onsuccess=function(){}; //定义载入失败事件 this.onfailure=function(){};} //创建对象 function loadjs(opjs) { document.getElementById("j").value="eeeeeeeee"; var jl=new JsLoader(); //定义载入成功处理程序 jl.onsuccess=function() { //al("dddd成功了"); } //定义载入失败处理程序 jl.onfailure=function() { alert("文件载入失败!"); } //开始载入 jl.load(opjs); //alert("test.js"); } //--> </script>
<script type="text/javascript"> function LoadJs(sSrc){ var oHead = document.getElementsByTagName('head')[0]; var oScript = document.createElement('script');oScript.type = "text/javascript"; oScript.src = sSrc; oHead.appendChild(oScript); } </script>
相关文章推荐
- 同步异步动态引入js文件的几种方法总结
- JS动态载入外部JS文件
- AJAX载入外部JS文件到页面并让其执行的方法(附源码)
- JS实现文件动态顺序载入的方法
- AJAX载入外部JS文件到页面并让其执行的方法(附源码)
- JS实现文件动态顺序载入的方法
- 同步异步动态引入js文件的几种方法
- 呼叫外部js文件并使用其内部方法
- 动态写入js文件的方法
- 不使用script导入js文件的几种方法
- js 在客户端操作文件的方法
- Node.js本地文件操作之文件拷贝与目录遍历的方法
- 清除浏览器缓存js文件的几种方法
- JS对外部文件的加载及对IFRMAME的加载的实现,当加载完成后,指定指向方法(方法回调)
- 原生JS实现动态加载js文件并在加载成功后执行回调函数的方法
- 确认js文件载入完全的方法
- 动态创建script在IE中缓存js文件时导致编码的解决方法
- js操作select控件的几种方法
- js操作本地文件的方法
- js加载之使用DOM方法动态加载Javascript文件