2014-02-13 198 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. 
});