What is the difference between lang and type attributes in a script tag?
Per the HTML 4.01 Spec:
type:
This attribute specifies the scripting language of the element's contents and overrides the default scripting language. The scripting language is specified as a content type (e.g., "text/javascript"). Authors must supply a value for this attribute. There is no default value for this attribute.language: Deprecated. This attribute specifies the scripting language of the contents of this element. Its value is an identifier for the language, but since these identifiers are not standard, this attribute has been deprecated in favor of type.
Difference between script type and script language declarations
Use <script type="text/javascript">
or simply <script>
(if omitted, the type
is the same). Do not use <script language="JavaScript">
; the language
attribute is deprecated.
HTML Script tag: type or language (or omit both)?
The language
attribute has been deprecated for a long time, and should not be used.
When W3C was working on HTML5, they discovered all browsers have "text/javascript" as the default script type
, so they standardized it to be the default value. Hence, you don't need type
either.
For pages in XHTML 1.0 or HTML 4.01 omitting type
is considered invalid. Try validating the following:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<script src="http://example.com/test.js"></script>
</head>
<body/>
</html>
You will be informed of the following error:
Line 4, Column 41: required attribute "type" not specified
So if you're a fan of standards, use it. It should have no practical effect, but, when in doubt, may as well go by the spec.
Difference between script tag with type and script without type?
In HTML 4, the type
attribute is required. In my experience, all browsers will default to text/javascript
if it is absent, but that behaviour is not defined anywhere. While you can in theory leave it out and assume it will be interpreted as JavaScript, it's invalid HTML, so why not add it.
In HTML 5, the type
attribute is optional and defaults to text/javascript
:
The type attribute gives the language of the script or format of the data. If the attribute is present, its value must be a valid MIME type. The charset parameter must not be specified. The default, which is used if the attribute is absent, is "text/javascript".
difference between type=text/javascript and language=javascript
Per the HTML 4.01 Spec:
type:
This attribute specifies the scripting language of the element's contents and overrides the default scripting language. The scripting language is specified as a content type (e.g., "text/javascript"). Authors must supply a value for this attribute. There is no default value for this attribute.language: Deprecated. This attribute specifies the scripting language of the contents of this element. Its value is an identifier for the language, but since these identifiers are not standard, this attribute has been deprecated in favor of type.
Language is generally used to indicate the Javascript version that your script requires. Browsers that support the language attribute won't load or run the script if it doesn't support it. About the only use would be if you had critical Javascript functions where you needed workarounds for older browsers.
Understanding the type attribute in a script tag
I want to understand the magic behind adding type='text/babel' to a script tag.
No real magic: The Babel script you include on the page looks for those elements and transpiles them into ES5 on-the-fly, then has the browser run the resulting ES5 code. Setting that type
on the script elements does two things:
Prevents the browser from trying to run them directly, and
Identifies them for the Babel script.
Regarding type
on script
in general, from the specification:
The
type
attribute gives the language of the script or format of the data. If the attribute is present, its value must be a valid MIME type. The charset parameter must not be specified. The default, which is used if the attribute is absent, is"text/javascript"
.
Then later when explaining how to process script
elements:
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.
It's worth calling out what the Babel website says about transpiling in the browser:
Compiling in the browser has a fairly limited use case, so if you are working on a production site you should be precompiling your scripts server-side. See setup build systems for more information.
(Where they've said "compiling" most of us would say "transpiling.")
script tag vs script type = 'text/javascript' tag
In HTML 4, the type attribute is required. In my experience, all
browsers will default to text/javascript if it is absent, but that
behaviour is not defined anywhere. While you can in theory leave it
out and assume it will be interpreted as JavaScript, it's invalid
HTML, so why not add it.In HTML 5, the type attribute is optional and defaults to
text/javascript
Use <script type="text/javascript">
or simply <script>
(if omitted, the type is the same). Do not use <script language="JavaScript">
; the language attribute is deprecated
Ref :
http://social.msdn.microsoft.com/Forums/vstudio/en-US/65aaf5f3-09db-4f7e-a32d-d53e9720ad4c/script-languagejavascript-or-script-typetextjavascript-?forum=netfxjscript
and
Difference between <script> tag with type and <script> without type?
Do you need type attribute at all?
I am using HTML5- No
I am not using HTML5 - Yes
Is the 'type' attribute necessary for script tags?
For HTML 4.x, the type
attribute is required. Source
This attribute specifies the scripting language of the element's contents and overrides the default scripting language. The scripting language is specified as a content type (e.g., "text/javascript"). Authors must supply a value for this attribute. There is no default value for this attribute.
For HTML 5, it is optional. If it is not specified, it defaults to text/javascript
. Source
The type attribute gives the language of the script or format of the data. If the attribute is present, its value must be a valid MIME type. The charset parameter must not be specified. The default, which is used if the attribute is absent, is "text/javascript".
Recommendation: See HTML 5.2
For HTML 5.2, it should be omitted if using a valid JavaScript MIME type (e.g. text/javascript
). Source
Omitting the attribute, or setting it to a JavaScript MIME type, means that the script is a classic script, to be interpreted according to the JavaScript Script top-level production. Classic scripts are affected by the charset, async, and defer attributes. Authors should omit the attribute, instead of redundantly giving a JavaScript MIME type.
Does order of attributes matter in script tags?
The order of attributes in HTML elements doesn't matter. You can write the attributes in any order you like id
last onclick
first - it does not matter.
Are Type Attributes on SCRIPT, STYLE, and LINK elements still needed?
In short, they are not required since HTML5, but are required by W3C standards in HTML4/XHTML.
In HTML5 type
of script
tag:
type - This attribute identifies the scripting language of code embedded
within a script element or referenced via the element’s src attribute.
This is specified as a MIME type; examples of supported MIME types
include text/javascript, text/ecmascript, application/javascript, and
application/ecmascript. If this attribute is absent, the script is
treated as JavaScript.
in HTML4 and XHTML it's required by W3C standards.
For style
and link
type
:
In HTML5, the type attribute is no longer required. Default value is
"text/css".
Related Topics
Chrome Bug with Colspan and Border
How to Conditionally Display Element Attributes Using Angular2
How to Put Table in The Center of The Page Using CSS
What's The Maximum Number of Simultaneous Connections a Browser Will Make
The Ajax Response: Data (JSON, Xml) or HTML Snippet
How to Apply Same Content to Multiple HTML Pages
How to Use Text-Overflow Ellipsis in an HTML Input Field
Flip/Mirror an Image Horizontally + Vertically with CSS
Does CSS Grid Have a Flex-Grow Function
Open PDF File in New Window from Variable Path Name in Gsp Page
Why Everything Word-Wrap Inside an Absolute Element Nested Inside a Float or Inline-Block Element
Bootstrap Dropdown Clipped by Overflow:Hidden Container, How to Change The Container
Flexbox 3 Divs, Two Columns, One with Two Rows
Excel Crashes When Attempting to Inspect Dispstaticnodelist
How to Style a Horizontal List with Bullets Between Items Using CSS