I use this in the head
tag:
<script src="js/lightbox.js"></script>
Is it possible to remove this off the header and load this file with onload()
?
<body onload="...">...</body>
Note: This is not a function, it's an external js file with several functions.
Thanks!
I use this in the head
tag:
<script src="js/lightbox.js"></script>
Is it possible to remove this off the header and load this file with onload()
?
<body onload="...">...</body>
Note: This is not a function, it's an external js file with several functions.
Thanks!
Share Improve this question edited Feb 13, 2014 at 18:04 jasilva 7503 gold badges19 silver badges47 bronze badges asked Feb 13, 2014 at 17:59 Roman TischRoman Tisch 2173 gold badges4 silver badges13 bronze badges 1- just add "Async" and "defer" attribute to your JS tag Eg: "<script src="js/lightbox.js" defer async="async"></script>" this will load when ever you call a function inside it. – NiRUS Commented Feb 13, 2014 at 18:08
5 Answers
Reset to default 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|plete/.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>
I still think its better to load in jQuery and use $.getScript instead as you have lots of goodies there.
Can call this on body load
onload="blabla();"
function blabla()
{
$.getScript( 'url to your js file', function( data, textStatus, jqxhr ) {
// do some stuff after script is loaded
});
}
You can learn more here
Source
If you want to do it without jQuery, use this
function addScript(filename)
{
var scriptBlock=document.createElement('script')
scriptBlock.setAttribute("type","text/javascript")
scriptBlock.setAttribute("src", filename)
document.getElementsByTagName("head")[0].appendChild(scriptBlock)
}
and call it with <body onload="addScript('myFile.js')"
. If you have multiple files to load, you could put in a wrapper, that adds all the files you want.
Use $(document).ready() and from this function load javascript. It sounds crazy but can be done. please follow http://www.javascriptkit./javatutors/loadjavascriptcss.shtml
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./some.js", function() {
//Do your thing.
});