读书人

动态导入js引发的有关问题

发布时间: 2012-09-21 15:47:26 作者: rapoo

动态导入js引发的问题

比较常见的用于动态导入js的方法有以下两种:

?

今天做动态导入时发现了问题,t.js内容如下:

?脚本出错,提示缺少对象(使用方法二也有同样的问题)。为了说明问题,我们稍做修改,t.js内容如下:?

?

可以看到,是先弹出"index.htm",再弹出"t.js",这说明t.js的导入是在页面脚本执行完后进行的,在执行M()时,M函数还未声明,因而报错。解决方法:

<script type="text/javascript">   var MiniSite=new Object();   MiniSite.Browser={       ie:/msie/.test(window.navigator.userAgent.toLowerCase()),       moz:/gecko/.test(window.navigator.userAgent.toLowerCase()),       opera:/opera/.test(window.navigator.userAgent.toLowerCase()),       safari:/safari/.test(window.navigator.userAgent.toLowerCase())   };   MiniSite.JsLoader={       load:function(sUrl,fCallback){           var _script=document.createElement('script');           _script.setAttribute('charset','gb2312');           _script.setAttribute('type','text/javascript');           _script.setAttribute('src',sUrl);           document.getElementsByTagName('head')[0].appendChild(_script);           if(MiniSite.Browser.ie){               _script.onreadystatechange=function(){                   if(this.readyState=='loaded'||this.readyStaate=='complete'){                       fCallback();                   }               };           }else if(MiniSite.Browser.moz){               _script.onload=function(){                   fCallback();               };           }else{               fCallback();           }       }   };     MiniSite.JsLoader.load("http://www.mzwu.com/t.js",function(){M();});   </script>     

?

?原文地址: http://www.ai-java.com/entry/117

读书人网 >JavaScript

热点推荐