普通写法<script>载入外部JS的时候,是阻碍其他下载的,所有的加载都停止下来,等待这个外部JS的加载并执行完毕,所以异步加载js是非常有必要的,那如何解决实现呢,思路:
一、原生态js实现
- 创建一个script 的DOM节点;
- 对其的type属性赋值为text/javascript ;
- 再指定它的src属性为要加载的js文件URL;
- 把这个DOM节点加入到页面中。
- 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.readyState=='complete'){
- fCallback();
- }
- };
- }else if(MiniSite.Browser.moz){
- _script.οnlοad=function(){
- fCallback();
- };
- }else{
- fCallback();
- }
- }
- };
- //使用方法
- function showaddr()
- {
- alert(IPData);
- }
- MiniSite.JsLoader.load("http://fw.qq.com/ipaddress",function(){showaddr();});
二、用jQuery 的$.getscript()方法来完成异步加载。