Connecting Tech Pros Worldwide Help | Site Map

More than a single script block within a single HEAD and BODY

Water Cooler v2
Guest
 
Posts: n/a
#1: Apr 18 '06
Questions:

1. Can there be more than a single script block in a given HEAD tag?
2. Can there be more than a single script block in a given BODY tag?

To test, I tried the following code. None of the script gets executed.
Can someone please give me a direction as to what I may be missing?

Thanks.





<!--The purpose of this program will be to:

1. Use an external script;
2. To use more than one SCRIPT tag inside a HEAD tag; and
3. To use more than one SCRIPT tag inside a BODY tag.
-->

<HTML>

<HEAD>

<SCRIPT language="JavaScript type="text/javascript">
<!--
document.write("This is the first of the script tags within the HEAD
tag.");
-->
</SCRIPT>

<SCRIPT language="JavaScript type="text/javascript">
<!--
document.write("This is the second script tag within the HEAD
tag.");
-->
</SCRIPT>

<SCRIPT language="JavaScript type="text/javascript"
src="TheExternalScript1.js"></SCRIPT>
</HEAD>



<BODY>
<SCRIPT language="JavaScript type="text/javascript">
<!--
document.write("\
The purpose of this program will be to:<BR/><BR/>\
\
1. Use an external script;<BR/>\
2. To use more than one SCRIPT tag inside a HEAD tag; and<BR/>\
3. To use more than one SCRIPT tag inside a BODY tag.<BR/>");
//-->
</SCRIPT>

<P>Some intermittent text.</P>

<SCRIPT language="JavaScript type="text/javascript">
<!--
document.write("This is the second of the script tags within the
BODY tag.");
-->
</SCRIPT>

<P>More HTML text.</P>

<SCRIPT language="JavaScript type="text/javascript">
<!--
document.write("This is the third of the script tags within the BODY
tag.");
-->
</SCRIPT>

<P>More and more HTML.</P>

<SCRIPT language="JavaScript type="text/javascript"
src="TheExternalScript2.js"></SCRIPT>

<P>Finally, the concluding part of the HTML text.</P>

</BODY>

</HTML>

RobG
Guest
 
Posts: n/a
#2: Apr 18 '06

re: More than a single script block within a single HEAD and BODY


Water Cooler v2 wrote:[color=blue]
> Questions:
>
> 1. Can there be more than a single script block in a given HEAD tag?[/color]

Inside a script *element*, yes. You can have as many as you like.

[color=blue]
> 2. Can there be more than a single script block in a given BODY tag?[/color]

Inside a script *element*, yes. You can have as many as you like.

[color=blue]
> To test, I tried the following code. None of the script gets executed.[/color]

Because there are errors in the and HTML - *always* start with valid
HTML. The W3C HTML validator lets you paste markup directly into the
validation form.

<URL:http://validator.w3.org/>

[color=blue]
> Can someone please give me a direction as to what I may be missing?[/color]

See below.

[color=blue]
> <!--The purpose of this program will be to:
>
> 1. Use an external script;
> 2. To use more than one SCRIPT tag inside a HEAD tag; and
> 3. To use more than one SCRIPT tag inside a BODY tag.
> -->
>
> <HTML>
>
> <HEAD>
>
> <SCRIPT language="JavaScript type="text/javascript">[/color]

The language attribute is deprecated, remove it. Keep type.

[color=blue]
> <!--[/color]

Don't use HTML comments inside script elements, they are useless.

[color=blue]
> document.write("This is the first of the script tags within the HEAD
> tag.");[/color]

The result of the document.write will be placed immediately after the
script element. It is still inside the head, the browser isn't supposed
to display any content in the head so the browser must decide whether to
employ error correction and end the head and display the text, or
continue the head to the closing tag and not show the text.

Whatever choice is made may be inconsistent across different browsers.

[color=blue]
> -->[/color]

This is a meaningless script statement. To use HTML comments at all,
the closing tag should be quoted:

// -->

But just don't use them.

[color=blue]
> </SCRIPT>
>
> <SCRIPT language="JavaScript type="text/javascript">
> <!--
> document.write("This is the second script tag within the HEAD
> tag.");
> -->
> </SCRIPT>[/color]

Comments as above.

[color=blue]
>
> <SCRIPT language="JavaScript type="text/javascript"
> src="TheExternalScript1.js"></SCRIPT>[/color]

What is in the external file? You should have a title element inside
the head. Putting one right at the top might encourage error correction
to move the closing head tag up higher and move the body up too -
causing the text written by document.write to be displayed (or not).
[color=blue]
> </HEAD>
>
>
>
> <BODY>
> <SCRIPT language="JavaScript type="text/javascript">[/color]

Here you are missing the closing quote after language="JavaScript

That will cause a variety of errors, essentially reversing the sense of
following double quotes.
[color=blue]
> <!--
> document.write("\[/color]

It is legal to quote new lines, but much preferred to use concatenation:

document.write("The purpose ..."
+ "<br>1. Use..."
+ "<br>2. To..."
);
[color=blue]
> The purpose of this program will be to:<BR/><BR/>\[/color]

Don't use XHTML style empty element tags in what is HTML (despite the
missing, required DOCTYPE element).

Forward slashes "/" within document.write strings should be quoted
because they should indicate the close of the script element, most
browsers tolerate them regardless.
[color=blue]
> \
> 1. Use an external script;<BR/>\
> 2. To use more than one SCRIPT tag inside a HEAD tag; and<BR/>\
> 3. To use more than one SCRIPT tag inside a BODY tag.<BR/>");[/color]

Fix those errors and apply to the rest of the page.

[...]


--
Rob
Water Cooler v2
Guest
 
Posts: n/a
#3: Apr 18 '06

re: More than a single script block within a single HEAD and BODY


Many thanks, Rob. Mike, on another thread (two threads below) had
advised me with the same invaluable tips as you've given. Thank you
very much. I will incorporate them in any code I write from now on. I
wrote this snippet before I read the two replies (yours and Mike's).

I am sorry I forgot to mention that I had two external script files
with the same names as the references above (TheExternalScrip1.js and
TheExternalScript2.js) so there wasn't any problem with that. In the
external files, I had just written a document.write statement each.

I spotted the cause of the bug. I had not terminated the string
"JavaScript" in any of the declarations of the opening SCRIPT tag, like
so:

<SCRIPT language="JavaScript type="text/javascript">

In any case, I'll omit the language attribute and heed to the other
advise you've mentioned as well. Thanks again.

Tony
Guest
 
Posts: n/a
#4: Apr 18 '06

re: More than a single script block within a single HEAD and BODY


Water Cooler v2 wrote:[color=blue]
> Questions:
>
> 1. Can there be more than a single script block in a given HEAD tag?[/color]

yes
[color=blue]
> 2. Can there be more than a single script block in a given BODY tag?[/color]

yes
[color=blue]
> To test, I tried the following code. None of the script gets executed.
> Can someone please give me a direction as to what I may be missing?[/color]
[color=blue]
> <HTML>
>
> <HEAD>
>
> <SCRIPT language="JavaScript type="text/javascript">[/color]

A) language is deprecated
B) *** you have no closing quote after "JavaScript
*** That would be a major contributor to your problem
*** NOTE: This is repeated on every <script> tag you use
[color=blue]
> <!--[/color]

Unnecessary, and could potentially cause problems
[color=blue]
> document.write("This is the first of the script tags within the HEAD
> tag.");[/color]

Have you tried using alert() instead of document.write() ? I suspect
you'll find it works better.
[color=blue]
> -->[/color]

As-is, this would cause an error, and probably cause the javascript to
stop executing.
[color=blue]
> </SCRIPT>[/color]

All the same comments apply to all subsequent <script> tags.
Closed Thread


Similar JavaScript / Ajax / DHTML bytes