468,538 Members | 1,812 Online
Bytes | Developer Community
New Post

Home Posts Topics Members FAQ

Post your question to a community of 468,538 developers. It's quick & easy.

Attempting nested javascript include

Hello,
I have been trying to include a js file from within another js file. I
can get this to work for firefox, but not i.e.

What I have is
a.html ...
<script language='JavaScript'
src='b.js'></script><script>Function();</script>
b.js ....
function Function() {
var s1 = "";
document.write("<sc" + s1+ "ript language='JavaScript'
src='c.js'></sc" + s1 + "ript>");
document.write("<sc" + s1+ "ript language='JavaScript'>Func2();</sc" +

s1 + "ript>");
}
and then c.js
I tried the s1="" from another googled post - no joy.
if I change a.html to
<script language='JavaScript' src='cb.js'></script>
<script language='JavaScript'
src='b.js'></script><script>Function();</script>
it works.

Is anyone able to get this to work with IE 6?

Thanks - Bryan.

Jul 23 '05 #1
3 11592

"Brit" <mo***@english.net> wrote in message
news:11**********************@g14g2000cwa.googlegr oups.com...
Hello,
I have been trying to include a js file from within another js file. I
can get this to work for firefox, but not i.e.

What I have is
a.html ...
<script language='JavaScript'
src='b.js'></script><script>Function();</script>
b.js ....
function Function() {
var s1 = "";
document.write("<sc" + s1+ "ript language='JavaScript'
src='c.js'></sc" + s1 + "ript>");
document.write("<sc" + s1+ "ript language='JavaScript'>Func2();</sc" +

s1 + "ript>");
}
and then c.js
I tried the s1="" from another googled post - no joy.
if I change a.html to
<script language='JavaScript' src='cb.js'></script>
<script language='JavaScript'
src='b.js'></script><script>Function();</script>
it works.

Is anyone able to get this to work with IE 6?

Thanks - Bryan.


Here's what I use (I have this in a 'util.js' file that I load 'manually'
(with a <script src=...> element):
====================
var Included={};
function Include() {
var src, url, heads;
heads = document.getElementsByTagName("head");
if (heads.length==0) {throw new Error(0x8009000,"Include: No <head> tag
exists. Scripts not loaded.");}
url = document.URLUnencoded;
for (a=0; a<arguments.length; a++) {
src = arguments[a];
if (Included[src]) continue;
Included[src] = true;
if (url.substr(0,5)=="file:") {
if (src.charAt(0)=="/") src = "C:<your webroot directory full path>"+src;
else src = url.slice(7,url.lastIndexOf("\\")+1)+src;
}
heads[0].appendChild(document.createElement("<script language='JavaScript'
src='"+src+"' />"));
}
}
====================
Then in the '<head>' I put:

<script
language="javascript">Include("/_ScriptLibrary/MyScript.js","LocalScripts.js",...)</script>

You may also use Include() in other 'Included' or manually loaded script
files, but may not reference their contents until the parent file is fully
loaded.

This works fine in IE6 but is untested in any other enviromant.
Jul 23 '05 #2
"Brit" <mo***@english.net> writes:
I have been trying to include a js file from within another js file. I
can get this to work for firefox, but not i.e.
*how* does it not work in IE? Does it give an error message? Do you
have Javascript error messages enabled?
<script language='JavaScript'
src='b.js'></script>
Should be
<script type="text/javascript" src="b.js"></script>
The "type" attribute is mandatory, and the language attribute is
deprecated and not needed.
<script>Function();</script>
....
function Function() {
*Bad* name for a function. There is already a built-in function called
Function.
var s1 = "";
document.write("<sc" + s1+ "ript language='JavaScript'
src='c.js'></sc" + s1 + "ript>");
No need for being this convoluted. Just write:
document.write("<script type='text/javascript' src='c.js'></script>");

Since this is inside a javascript file, and not inside an HTML file,
there is no need to escape anything.

If this had been inside a script tag in an HTML file, all you need to do
is change all "</" to "<\/", i.e.,
document.write("<script type='text/javascript' src='c.js'><\/script>");

Your attempt at escaping by putting "s1" in the middle would still
fail in a fully standards compliant HTML parser, because such one
would end the script tag at the first occurence of "</". Actual
browsers only end it at "</script", but there is no need to take
chances when being correct is so easy.
document.write("<sc" + s1+ "ript language='JavaScript'>Func2();</sc" +

s1 + "ript>");
}
and then c.js
.... defining Func2, I guess.
I tried the s1="" from another googled post - no joy.
And no need.
if I change a.html to
<script language='JavaScript' src='cb.js'></script>
<script language='JavaScript'
src='b.js'></script><script>Function();</script>
it works.

Is anyone able to get this to work with IE 6?


Again, what error message does it give you?

/L
--
Lasse Reichstein Nielsen - lr*@hotpop.com
DHTML Death Colors: <URL:http://www.infimum.dk/HTML/rasterTriangleDOM.html>
'Faith without judgement merely degrades the spirit divine.'
Jul 23 '05 #3
Thanks for the response. I stripped down the code and renamed the
functions - supposedly for clarity.

Anyway, I tried with the added type field, however that didn't make any
difference here. The error I get is 'Object Expected' with a code of 0.
The line it points to is the call to the function in b.js. If I remove
the call to Func2 in b.js, it works fine. If I replace the call to
Func2 in b.js, but include c.js in a.html it works. This is what I've
done for now - but it's annoying that it doesn't work with just
including b.js and calling Function.

Jul 23 '05 #4

This discussion thread is closed

Replies have been disabled for this discussion.

Similar topics

3 posts views Thread by Rubén Campos | last post: by
7 posts views Thread by Alfonso Morra | last post: by
2 posts views Thread by Alfonso Morra | last post: by
11 posts views Thread by charlie | last post: by
18 posts views Thread by desktop | last post: by
13 posts views Thread by JRough | last post: by
reply views Thread by Tommy Jakobsen | last post: by
By using this site, you agree to our Privacy Policy and Terms of Use.