February 26, 2001 - Dynamically Loading External Files | WebReference

February 26, 2001 - Dynamically Loading External Files

Yehuda Shiran February 26, 2001
Dynamically Loading External Files
Tips: February 2001

Yehuda Shiran, Ph.D.
Doc JavaScript

Internet Explorer 5.5 and Netscape 6 differ from previous versions in the way they dynamically load external scripts. The term "dynamic loading" refers here to the case where you 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 close the <SCRIPT> element immediately after loading the external script:

<SCRIPT LANGUAGE="JavaScript">
document.write('<SCRIPT LANGUAGE="JavaScript" SRC="010226b.js"><\/SCRIPT>');
</SCRIPT>
<SCRIPT LANGUAGE="JavaScript">
printMessage();
</SCRIPT>
Try it. You should get an alert box with the message "Hello from External".