我在某处读到您不再需要type="text/javascript"
之类的内容以及脚本代码中奇怪的CDATA
和<!--
内容。所以,而不是:
<script type="text/javascript">
//<![CDATA[
<!--
//your script here
-->
//]]>
</script>
你会这样做:
<script>
//your script here
</script>
我不记得我在哪里读到这个。我认为这是来自谷歌或雅虎工程师,他们特别提到哪些浏览器需要这些古老的结构以及原因。任何人都知道这篇博文/文章是关于什么的,或者有一个很好的资源谈论这个?
答案 0 :(得分:126)
请参阅Crockford's write-up on the <script>
tag,最值得注意的是:
不要将
<!-- //-->
hack与脚本一起使用。它旨在防止脚本在第一代浏览器Netscape 1和Mosaic上显示为文本。多年来一直没有必要。<!-- //-->
应该表示HTML评论。注释应该被忽略,而不是编译和执行。此外,HTML注释不包括--
,因此递减的脚本具有HTML错误。
...
type="text/javascript"
此属性是可选的。从Netscape 2开始,所有浏览器中的默认编程语言都是JavaScript。在XHTML中,此属性是必需且不必要的。在HTML中,最好不要使用它。浏览器知道该怎么做。
答案 1 :(得分:43)
这是Crockford推荐。我知道我已经看到它在其他地方回响(可能是ppk?)。 HTML5规范不要求它。
奇怪的是,使用“type”属性来标记不想要评估的<script>
块,有点 au courant :< / p>
<script type='text/html-template'>
<div> this is a template </div>
</script>
通过提供一种奇怪的非JavaScript类型,您可以将原始文本填充到页面中以供其他JavaScript代码使用(可能是在可以评估的脚本块中)。< / p>
答案 2 :(得分:19)
HTML5不需要type="text/javascript"
(这是默认设置)。
CDATA
仅适用于XHTML页面,如果脚本中包含任何HTML字符(例如'&lt;'和'&gt;')。
<!--
。
答案 3 :(得分:3)
type 属性标识嵌入在脚本元素中或通过元素的src属性引用的代码的脚本语言。这被指定为MIME类型;支持的MIME类型的示例包括text / javascript,text / ecmascript,application / javascript和application / ecmascript。
type 属性指定元素的脚本语言 内容并覆盖默认的脚本语言。脚本 语言被指定为内容类型(例如,&#34; text / javascript&#34;)。 作者必须为此属性提供值。没有默认值 该属性的值。
但是HTML5 text/javascript
是默认类型,因此您可以省略
类型属性提供脚本的语言或格式 数据。如果该属性存在,则其值必须是有效的MIME 类型。不得指定charset参数。默认,哪个 如果属性不存在,则使用&#34; text / javascript&#34;。
答案 4 :(得分:2)
你可能会想到this article here依赖于脚本默认为HTML5中的text / javascript,而非HTML5浏览器仍然希望你特定地定义类型,即使它们几乎总是猜测文本/ javascript无论如何。
答案 5 :(得分:1)
由浏览器根据标头正确解释script
块,我相信,而不是type
属性。所以要回答你的问题,现代浏览器不需要它(我说的是IE7 +,FF,Webkit)。如果您支持的是旧浏览器...我为您感到遗憾=)
答案 6 :(得分:1)
好吧,我很想说没有人再使用text/javascript
,甚至缩小工具也可能会删除它......
实际上,Facebook SDK documentation仅指定<script>
。
然而,
Google SDK documentation仍有text/javascript
。
Amazon SDK documentation仍有text/javascript
。
Linkedin API documentation仍有text/javascript
。
Instagram仍在使用text/javascript
。
答案 7 :(得分:1)
?? HTML5规范敦促作者忽略该属性,而不提供冗余的MIME类型。 MDN
MIME Sniffing Standard允许使用符合以下条件的任何MIME类型(多用途Internet邮件扩展)来提供JavaScript:
<script type="application/javascript"></script>
<script type="application/ecmascript"></script>
<script type="text/javascript"></script>
<script type="text/ecmascript"></script>
答案 8 :(得分:0)
嗯,我一直看到没有text / javascript的更多例子,但由于某些原因,当我这样做时,我的脚本不会在FF中工作。我建议保留text / javascript声明。如果您的浏览器关闭了javascript,则CDATA标记会阻止javascript在您的网站中显示为纯文本。我个人不再使用这些标签,不认为有没有用户在那里,如果他们在那里他们可能想要成长一些大脑:P
答案 9 :(得分:0)
type="text/javascript"
:在HTML 4和XHTML中是必需的,但在HTML5中是可选的。
CDATA
:XHTML中必需。
<!--
:用于隐藏旧版浏览器中的JavaScript。例如:Netscape 1和Internet Explorer 2,其中任何人都不再使用它。
答案 10 :(得分:0)
如果要在SVG中放入脚本标签 ,则必须指定type属性。它应该是let search = $selector.find('.t130-searchInput').val().trim()
if (search) {
$input.val(search)
store.dispatch({
type: "SET_FORM_FIELD",
field: "searchTerm",
formName: "search",
value: search,
key: null,
isDirty: true
});
$button.click()
}
而不是"text/ecmascript"
。
如果脚本是内联的(未链接的),则也需要将脚本主体包装在CDATA声明中。因此, SVG (和其他XML变体)的内联脚本样板为
"text/javascript"
这些可能是“野外”的特殊情况,但是它们已经足够真实,并且SVG的使用正在增长,因此对于任何其他人来说,建议类型属性和CDATA在现代浏览器中已完全废弃是不正确的。用例很狭窄,是的,但并非闻所未闻。
“将环境改变为相反的情况,每一个智慧都变得愚蠢至极。” -阿什比