开发者

Will non-IE browsers use script inside a tag with type="text/jscript"?

I inherited an ancient codebase that includes pages with <script type="text/jscript"> -- yes, my life really does suck that much. The script appears to do nothing in modern, decent browsers (FF and Chrome, for a start) and I'm wondering if the stated script type is causing it to be ignored. I spent some time trying to figure out what's going on, and I see things like

As explained by JavaScript guru Douglas Crockford in his talk entitled The JavaScript Programming Language on YUI Theater, "[Microsoft] did not want to deal with Sun about the trademark issue, and so they called their implementation JScript. A lot of people think that JScript and JavaScript are different but similar languages. That's not the case. They are just different names for the same language, and the reason the names are different was to get around trademark issues."

on Wikipedia. So Javascript == JScript? But then, I see conflicting information, like this answer which seems to suggest that script that's declared as JScript will only run in IE.

So: can I just change the type tag and ever开发者_StackOverflowything will work fine? Is there a simple process for conversion? If not, I may just scrap the whole thing and start over.


From HTML 5 chapter 4.3

7) If the user agent does not support the scripting language given by the script block's type for this script element, then the user agent must abort these steps at this point. The script is not executed.

That same chapter also says

If either:

  • the script element has a type attribute and its value is the empty string, or
  • the script element has no type attribute but it has a language attribute and that attribute's value is the empty string, or
  • the script element has neither a type attribute nor a language attribute, then

...let the script block's type for this script element be "text/javascript".

so I would just remove type="text/jscript" save a bit on bandwidth and live happily ever after.


So Javascript == JScript?

JScript is what Microsoft calls JavaScript

But then, I see conflicting information, like this answer which seems to suggest that script that's declared as JScript will only run in IE.

That doesn't conflict. It just means that other browsers don't recognise the mime type.

Browsers will ignore script elements with a type they do not recognise. text/jscript is non-standard and most browsers don't recognise it (Internet Explorer considers it an alias for text/javascript).

can I just change the type tag and everything will work fine?

Probably. The script might depend on other proprietary Microsoft—isms (such as document.all) or other non-standard behaviour (automatic id attribute to JS global conversion or treating CSS lengths that are missing a unit as pixels) though.


The other answer you linked to is completely incorrect. There are no differences between JScript and JavaScript. Changing the script type to "text/javascript" should work (unless the intent of the author was to force it so that only IE ran the script)


the type= requirements have been taken out of html5. I believe the proper xhtml code would be ...

<script type="text/javascript">
<![CDATA[
// content of your Javascript goes here
]]>
</script>

... but browsers did not follow the requirements of xhtml of forcing an error. Most web hosts keep the delivery of xhtml and html docs as MIME-type "text/html", not the "application/xhtml+xml" which should force an error if the xhtml does not validate.

HTML4 uses are variety of types ... http://www.w3.org/TR/html4/interact/scripts.html ... but browsers do not force html4 validation.

vscript, tcl don't have common support - we are talking about Javascript or any of the other names it gets as in becomes a more powerful language.


A bogus "type" attribute will definitely make scripts not work. The browser thinks you don't want it to run the script, basically.

Really, the "type" attribute is not necessary unless you definitely don't want the browser to run a script (which people do when their "scripts" are actually template bodies, or other data like that). You could either change all yours to "text/javascript" or just get rid of the attribute entirely.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜