March 1, 2001 - Indirect External File Loading
March 1, 2001 Indirect External File Loading Tips: March 2001
Yehuda Shiran, Ph.D.
|
document.write
the include statement on the fly. Suppose you have the following external script:
function printMessage() {
alert("Hello from External");
}
and you want to dynamically load it from the main html code:
<SCRIPT LANGUAGE="JavaScript">
document.write('<SCRIPT LANGUAGE="JavaScript" SRC="010226b.js"><\/SCRIPT>');
</SCRIPT>
Now, suppose you want to call the printMessage()
function in the main html program, immediately after loading the script:
<SCRIPT LANGUAGE="JavaScript">
document.write('<SCRIPT LANGUAGE="JavaScript" SRC="010226b.js"><\/SCRIPT>');
printMessage();
</SCRIPT>
Try it. You get an error message. The reason for this failure is that both Internet Explorer 5.5 and Netscape 6 do not wait for the external script to be read before continuing parsing the main script.
One of the remedies for this problem is to use indirection. Put a static include in your main program, and then write the dynamic loading command (document.write
) in the included file. For example, put the following code in your main page:
<SCRIPT LANGUAGE="JavaScript" SRC="010301b.js"></SCRIPT>
In the file 010301b.js
put the dynamic load command:
document.write('<SCRIPT LANGUAGE="JavaScript" SRC="010301c.js"><\/SCRIPT>');
Your main page should like like this now:
<SCRIPT LANGUAGE="JavaScript" SRC="010301b.js"></SCRIPT>
<SCRIPT LANGUAGE="JavaScript">
printMessage();
</script>
Check it out. You should get the alert message "Hello From External."