2014-02-13 213 views
3

我在head标签使用:加载外部JavaScript文件后的onload()

<script src="js/lightbox.js"></script> 

是否有可能去除这一关标头和onload()加载此文件?

<body onload="...">...</body> 

注意:这不是一个函数,它是一个具有多个函数的外部js文件。

谢谢!

+0

只需在您的JS标记中添加“Async”和“defer”属性例如: “”调用它里面的函数。 – Nirus

回答

2
onload="blabla();" 

function blabla() 
{ 
    $.getScript('url to your js file', function(data, textStatus, jqxhr) { 
     // do some stuff after script is loaded 
    }); 
} 

您可以在这里了解更多

Source

4
<script> 
function loadJS(src, callback) { 
    var s = document.createElement('script'); 
    s.src = src; 
    s.async = true; 
    s.onreadystatechange = s.onload = function() { 
     var state = s.readyState; 
     if (!callback.done && (!state || /loaded|complete/.test(state))) { 
      callback.done = true; 
      callback(); 
     } 
    }; 
    document.getElementsByTagName('head')[0].appendChild(s); 
} 
loadJS('/script/script.js', function() { 
    // put your code here to run after script is loaded 
}); 
</script> 

我还是觉得不是作为你有很多东西在那里它能够更好地在jQuery的加载和使用$ .getScript。

可以的,如果你想这样做没有jQuery的身体上的负荷

2

调用此方法,使用这种

function addScript(filename) 
{ 
var scriptBlock=document.createElement('script') 
scriptBlock.setAttribute("type","text/javascript") 
scriptBlock.setAttribute("src", filename) 
document.getElementsByTagName("head")[0].appendChild(scriptBlock) 
} 

<body onload="addScript('myFile.js')"调用它。如果你有多个文件要加载,你可以放入一个包装器,它会添加你想要的所有文件。

0
 

var JS = { 
    load: function(src, callback) { 
    var script = document.createElement('script'), 
     loaded; 
    script.setAttribute('src', src); 
    if (callback) { 
     script.onreadystatechange = script.onload = function() { 
     if (!loaded) { 
      callback(); 
     } 
     loaded = true; 
     }; 
    } 
    document.getElementsByTagName('head')[0].appendChild(script); 
    } 
}; 

// Example with callback 

JS.load("http://www.someawesomedomain.com/some.js", function() { 
    //Do your thing. 
});