What is the correct way to dynamically import JavaScript (.js) files into a parent JavaScript code, please?
I am using the following code, but it seems not correct:
function loadjscssfile(filename, filetype)
{
//if filename is a external JavaScript file
if (filetype=="js")
{
var fileref=document.createElement('script');
fileref.setAttribute("type","text/javascript");
fileref.setAttribute("src", filename);
}
//if filename is an external CSS file
else if (filetype=="css")
{
var fileref=document.createElement("link");
fileref.setAttribute("rel", "stylesheet");
fileref.setAttribute("type", "text/css");
fileref.setAttribute("href", filename);
}
if (typeof fileref!="undefined")
document.getElementsByTagName("head")[0].appendChild(fileref)
}
I think, the code is not correct, because, in the master JavaScript code, I can no read variables defined in the imported code, such as:
var fileRef = loadjscssfile('Language/svk.js', 'js');
alert("Pet Name: " + PETNAME);
imported svk.js file contains the only code:
// JavaScript Document
var PETNAME = "Beauty";
Thank you.
The reason you can't read the
PETNAME
variable is that dynamically injecting scripts like this is asynchronous and non-blocking. This means that youralert
executes before the script has actually been loaded. Instead, you might have to poll for the existence of thePETNAME
variable:Also, a more fool-proof way to inject elements dynamically is to insert them before the first script element since you know for sure that a script element has to exist (otherwise you wouldn't be executing code). In other words, replace:
with: