Does that work on all browsers?
Chen
Main Topics
Browse All TopicsLet's say I have two buttons. When button 1 is clicked, I want the page to include the file button1.js, and when button 2 is clicked I want to include the file button2.js. Please note that I do not want to include all files at the beginning of the page; I know how to do this but it's not what I'm looking for.
Chen
This Question has been solved and asker verified All Experts Exchange premium technology solutions are available to subscription members.
Experts Exchange has been collecting answers to technology questions since 1996…3 million and counting! If you have a question, chances are we already have your answer.
If you can't find the exact answer you're looking for, ask our exclusive community of 50,000 experts. You’ll get a personalized answer from a trusted professional.
Thousands of free tech tips, tricks, how-to’s and tutorials are available in our peer reviewed articles section. See for yourself how smart our experts are, no login required.
Access the answers to your technology questions today.
30-day free trial. Register in 60 seconds.
Members of the expert community talk about why the experience at Experts Exchange is different than what you will find anywhere else.

Try it out and discover for yourself.
30-day free trial. Register in 60 seconds.
Join the community of experts here and help other tech pros by answering question in your area of expertise. You can earn FREE access to all Experts Exchange's premium features and resources.
Hii,
Avner is correct...mine previous will work only for >IE5.
But, may be the following will help you...loads a script file with NN4, IE5+ and NN6.2+
<script type="text/javascript">
function LoadScript (url) {
if (document.layers)
window.location.href = url;
else if (document.getElementById) {
var e = document.createElement("sc
e.src = url;
e.type="text/javascript";
document.getElementsByTagN
}
}
</script>
Hope this helps
fargo
chen_avinadav,
Although you suggested you already know how to do it at load time, I have a feeling you are going to the wrong direction.
Maybe if you can describe the problem we can suggested a solution that will feet your needs.
Dynamically loading a JS is not something common to do and I can't really understand in what case this would be the choosen solution.
Thank you fargo for your help so far.
Avner: Here's what I want to do... I'm using a script that is similar to this:
http://www.brainjar.com/dh
What I would like to do, is NOT load the content of every window at load time, because it would slow things down a lot. So what I had in mind was loading getdata1.js, that will define the variable window1 and I wil use that inside the window. Obviously this procedure only has to be done once per window.
I hope this makes things more clear. :)
Chen
The following functions will allow a bit more compatibility with 4.x browsers, but will only be available -AFTER- the current javascript <script> blob has finished executing. The reason why I declare DEF_{filename w/o Extension}_JS is so that we won't include the same javascript file twice. It's a typical #INCLUDE senario very simular to that in C++ compilers.
Avner, this approach is very useful for developers of objects used in JavaScript. We only need to load the support files for the methods, properties, events and interfaces we need. This cuts down on the client page load times dramatically.
<!-- Begin Example HTML file -->
<html>
<head>
<title>Sample Page</title>
<script language="javascript" src="base.js" type="text/javascript"></s
<script language="javascript"><!--
// Load myObjType definition
_include("myObjType.js");
// -->
</script>
<script language="javascript"><!--
function init() {
var obj = new myObjType;
//alert(_def("myObjType"))
alert(obj.isDOM);
alert(obj.test("Hello "));
}
init();
// -->
</script>
</head>
<body>
<!-- Your Page Here -->
</body>
</html>
<!-- End Example HTML file -->
<!-- Begin base.js -->
/*************************
* FILE DEFINITION
**************************
var DEF_BASE_JS;
/*************************
* GLOBAL FUNCTION DEFS
**************************
function _defFunction(object, type, description) {
try {
if(description)
object.toString = new Function('return "['+type+'] Usage: '+description+'";');
else
object.toString = new Function('return "['+type+']";');
} catch(e) {
// Fail and return
return;
}
}
_defFunction(_defFunction,
function _def() {
try {
var args = arguments;
if(args && args.length > 0) {
var _defA = null;
// Build a custom check for each argument
for(var ptr=0; ptr < args.length; ptr++) {
_defA = new Function('' +
'try {' +
'if('+args[ptr]+') {' +
'return true;' +
'} else {' +
'return true;' +
'}' +
'} catch(e) {' +
'return false;' +
'}');
if(!_defA())
// If the global variable doesn't exist, halt and return failure immediately
return false;
}
// _def will return true only if all watched global variables exist
return true;
} else
// No arguments were passed
return false;
} catch(e) {
// There was an error during the check
return false;
}
}
_defFunction(_def, "Function _def", "Boolean _def(String expr1[, String expr2...exprN])");
function _include() {
try {
var args = arguments;
if(args && args.length > 0) {
var filename = "";
var defName = "";
var ext = "";
for(var ptr=0; ptr < args.length; ptr++) {
filename = defName = args[ptr];
if(defName.lastIndexOf("."
ext = defName.substring(defName.
defName = defName.substring(0, defName.lastIndexOf("."));
defName = "DEF_" + defName + "_" + ext;
defName = defName.toUpperCase();
if(!_def(defName)) {
var Location = filename;
if(_def("_BASE_PATH"))
Location = _BASE_PATH + Location;
document.writeln("<scr"+"i
}
}
}
}
} catch(e) {
// Fail and return
return;
}
return;
}
_defFunction(_include, "Function _include", "Void _include(String expr1[, String expr2...exprN])");
/* PLEASE NOTE: The following two functions are only needed to simplify object support and are used in myObjType.js example */
function _addProperty(object, name, pProperty) {
try {
// Property has not been added, add it
object[name] = pProperty;
return;
} catch(e) {
// Fail and return
return;
}
}
_defFunction(_addProperty,
function _addMethod(object, name, pfunction) {
//try {
// Method has not been added, add it
var args = arguments;
if(args.length < 4)
object[name] = new Function("return "+pfunction+"();");
else {
var paramString = "";
var argCount = 0;
for(var ptr=3; ptr < args.length; ptr++) {
if(args[ptr].length > 2 && args[ptr].substring(0, 2) == "__") {
paramString = paramString + ", arguments["+argCount+"]";
argCount++;
} else
paramString = paramString + ", " + args[ptr];
}
paramString = paramString.substring(2, paramString.length);
object[name] = new Function("return "+pfunction+"("+paramStrin
}
return;
//} catch(e) {
// Fail and return
// return;
//}
}
_defFunction(_addMethod, "Function _addMethod", "Void _addMethod(Object object, String name, String pfunction, String expr4[, String expr5...exprN])");
<!-- End base.js -->
<!-- Begin myObjType.js -->
/*************************
* FILE DEFINITION
**************************
var DEF_MYOBJTYPE_JS;
/*************************
* CLASS IMPLEMENTATION
**************************
function myObjType_test(index, sample) {
return index+sample;
}
/*************************
* INTERFACE DEFS
**************************
var myObjType = new Function('' +
// Private members
'this.pMembers = new Object;' +
'this.pMembers.isDOM = (document.getElementById)?
'this.pMembers.sample = "World!";' +
// Define the Interface Properties
'_addProperty(this, "isDOM", this.pMembers.isDOM);' +
// Define the Interface Methods
'_addMethod(this, "test", "myObjType_test", "__Index", "this.pMembers.sample");' +
// Bind to requested interface
'return this;');
_defFunction(myObjType, "Object myObjType");
<!-- End myObjType.js -->
chen_avinadav,
For your needs the obvious solution would be IFRAME.
using IFRAME you can dynamically change the SRC attribute and point to different HTML files (you won't have to save the content of the page in JS file).
If you need to support browsers back to NS4.x (god knows why..) you can use ILAYER that will also support the same thing.
Business Accounts
Answer for Membership
by: fargoPosted on 2003-05-11 at 04:38:06ID: 8503573
Hii,
ript"); ame("head" )[0].appen dChild(e);
use the following way...
<script type="text/javascript">
function LoadScript(url)
{
var e = document.createElement("sc
e.src = url;
e.type="text/javascript";
document.getElementsByTagN
}
function change(src_url)
{
LoadScript(src_url);
}
</script>
in the onclick button function...use the url u want to include...
hope this helps
thanks and regards
fargo