Possible Duplicates: Include a JavaScript file in a JavaScript file How to include a JavaScript file in another JavaScript file?
What is the best way to import a JavaScript file, for example file.js
, in a JavaScript function()?
For example, what is the best way to replace th开发者_开发技巧e todo statement:
function doSomething() {
if (xy.doSomething == undefined) {
// TODO: load 'oldVersionPatch.js'
}
...
}
Possibly the best solution is to create script element and add it into the HTML page.
- Is it better to add/append it into head, or body (what will load when)?
- Is it better to use JavaScript or jQuery (what is more cross-browser compatible)?
http://api.jquery.com/jQuery.getScript/
or
(function(){
this.__defineGetter__("__FILE__", function() {
return (new Error).stack.split("\n")[2].split("@")[1].split(":").slice(0,-1).join(":");
});
})();
(function(){
this.__defineGetter__("__DIR__", function() {
return __FILE__.substring(0, __FILE__.lastIndexOf('/'));
});
})();
function include(file,charset) {
if (document.createElement && document.getElementsByTagName) {
var head = document.getElementsByTagName('head')[0];
var script = document.createElement('script');
script.setAttribute('type', 'text/javascript');
script.setAttribute('src', __DIR__ + '/' + file);
if(charset){
script.setAttribute('charset', charset);
}
head.appendChild(script);
}
}
var filename = 'oldVersionPatch.js';
var js = document.createElement('script');
js.setAttribute("type","text/javascript");
js.setAttribute("src", filename);
document.getElementsByTagName("head")[0].appendChild(js);
.. should do it
Very simply, in JavaScript create a <script>
element, append the src
attribute with whatever the URL is and attach to the DOM. That should do it.
You have to make your code asynchronous to gain this:
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = yourJavascriptFileLocation;
script.onload = script.onreadystatechange = function() {
if (!script.readyState || script.readyState === 'complete') {
/* Your code rely on this JavaScript code */
}
};
var head = document.getElementsByTagName('head')[0];
// Don't use appendChild
head.insertBefore(script, head.firstChild);
精彩评论