Giving the script tag an ID
HtmlStandardsScriptingHtml Problem Overview
I came across a scenario where giving a script
element an id
attribute would solve a problem easily. However, after reading about the script
element at [w3schools][1] and [quirksmode][2], it seems doing so could have some unforeseen consequences.
Has anyone come across any of these issues with browsers such as Chrome, Safari, FF3 up and IE 7 up?
[1]: http://www.w3schools.com/TAGS/tag_script.asp "w3schools" [2]: http://www.quirksmode.org/js/placejs.html "quirksmode"
Html Solutions
Solution 1 - Html
It's fine in all current browsers.
The only browser that got <script id>
wrong was Netscape 4, which we stopped caring about a long, long time ago.
That quirksmode page seems to be badly out of date, what with its use of language
attributes, script <!--
hiding, and application/x-javascript
. Its advice about avoiding <script>
in the <body>
(and putting it in <head>
instead) is at odds with today's encouraged practices.
If we're talking <script>
attribute compatibility problems: defer
doesn't work everywhere so don't rely on it; charset
doesn't work everywhere, and neither does the charset parameter on the served script's Content-Type, so your script charset had better match the page; type
should always be text/javascript
and not one of the non-working alternatives the pedants who wrote RFC 4329 would like you to use.
Solution 2 - Html
Keep in mind that setting the id
on any element introduces a new global variable with the same name as the id
attribute:
Solution 3 - Html
If you're still having to support Netscape 4, you've got a lot of trouble – and the pity and condolences of the rest of the developer world.
Short answer, I wouldn't worry about it.
Solution 4 - Html
I know a long time has passed, but I thought it would be nice to point that when you look at W3 Schools definition of the script tag, you see at some point that
> The
Solution 5 - Html
I don't think a browser would have a problem by adding an id
attribute to a script
element.
On some of my sites, that load additional JavaScripts via JavaScript, I have added a class
attribute to make referencing them easier. The validator did not complain.