哪个更好:<script type =“ text / javascript”>…</ script>或<script>…</ script>


97

使用哪种更好或更方便:

<script type="text/javascript">...</script> 

要么

<script>...</script>

7
如果您使用JavaScript作为语言,那么第1个当然更好
Chinmayee G 2010年

我猜您将脚本声明为java-script所获得的性能提升微不足道,但这是一个很大的问题!
The_Butcher

10
如果我们在HTML v4和HTML v5中,“正确”答案是否有所不同?
Dimitrios Mistriotis

不是哪个更好,而是什么时候使用什么。当使用HTML5声明时<!doctype html>,默认情况下无需type="text/javascript"<script>标签上使用MIME类型提示。另一方面(非HTML5),建议这样做(建议参考MIME类型hint type="text/javascript")。
nyedidikeke

Answers:


137

您是否完全需要类型属性?如果您使用的是HTML5,则不会。否则,是的。HTML 4.01和XHTML 1.0 type根据需要指定属性,而HTML5具有可选属性,默认为text/javascript。HTML5现在得到了广泛的实现,因此,如果您使用HTML5 doctype,<script>...</script>则是有效且不错的选择。

至于type属性中应该包含的内容application/javascript,2006年注册的MIME类型旨在替代text/javascript所有主要浏览器(包括Internet Explorer 9)的当前版本并受其支持。相关RFC的引文:

因此,该文档定义了text / javascript和text / ecmascript,但将其标记为“过时”。不建议使用上面列出的实验性和未注册的媒体类型。媒体类型

  * application/javascript
  * application/ecmascript

本文档中也定义了这些术语,它们旨在用于一般用途,应改为使用。

但是,版本8及以下版本的IE不会在属性为或的<script>元素内执行脚本,因此,如果您需要支持旧版IE,则会遇到这种情况typeapplication/javascriptapplication/ecmascripttext/javascript


3
您不需要“需要”该type属性。无论如何,不​​再需要针对HTML4.01或XHTML 1.0进行验证,并且所有浏览器都将支持您的代码而无需text/javascript
Ian Storm Taylor

9
@Ian:在撰写本文时,HTML5规范是一个可行的草案,尚未演变成其永久移动目标的当前状态。HTML5的浏览器实现远远落后于现在。考虑到这一点,我认为当时的HTML5在通用网络上不可行,我的回答是绝对公平的,并且始终带有免责声明“如果您希望您的HTML有效”。我同意事情已经发生了变化,这个答案可能与修订有关,但是我不同意用HTML 4.01编写网页现在总是做错了。
蒂姆·唐

1
+1,刚从一个骗子那里发现了这个问题。这让我想起了几个职位安妮范·Kesteren的的博客,包括JavaScript的MIME类型,在那里他讨论了这一点。我找不到它,但是我确定有一篇文章他建议不要使用type,因为它在所有浏览器中都可以使用。也许是别人。
安迪E

1
我只是想说“谢谢”,因为我试图弄清楚为什么未在IE8及更低版本上执行“ application / javascript” JS文件!
andrewtweber 2011年

怎么样:“ text / javascript; version = 1.8”?
SparK's

10

两者都可以使用,但是xhtml标准要求您也指定type

<script type="text/javascript">..</script> 

<!ELEMENT SCRIPT - - %Script;          -- script statements -->
<!ATTLIST SCRIPT
  charset     %Charset;      #IMPLIED  -- char encoding of linked resource --
  type        %ContentType;  #REQUIRED -- content type of script language --
  src         %URI;          #IMPLIED  -- URI for an external script --
  defer       (defer)        #IMPLIED  -- UA may defer execution of script --
  >

type = content-type [CI]此属性指定元素内容的脚本语言,并覆盖默认脚本语言。脚本语言被指定为内容类型(例如“ text / javascript”)。 作者必须为此属性提供一个值。此属性没有默认值。

注意上面的重点。

http://www.w3.org/TR/html4/interact/scripts.html

注意:从HTML5开始(很远),该type属性不是必需的,并且是默认属性。


9

您需要使用<script type="text/javascript"> </script>,除非你使用HTML5。在这种情况下,建议您优先使用<script> ... </script>(因为type属性默认指定为该值)


5

这就是所需要的:

<!doctype html>
<script src="/path.js"></script>

3

<script type="text/javascript"></script> 因为它是正确的方式并且与所有浏览器兼容


-2

对于最新的Firefox,我必须使用:

<script type="text/javascript">...</script>

否则脚本可能无法正常运行。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.