【问题标题】:Which is better: <script type="text/javascript">...</script> or <script>...</script>哪个更好: <script type="text/javascript">...</script> 或 <script>...</script>
【发布时间】:2011-05-13 17:10:51
【问题描述】:

哪个更好或更方便使用:

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

<script>...</script>

【问题讨论】:

  • 如果您使用 javascript 作为语言,那么第一个当然更好
  • 我猜你通过将脚本声明为 java-script 获得的性能提升是微不足道的,但这是一个很好的问题!
  • 如果我们在 Html v4 和 Html v5 中,“正确”答案会有所不同吗?
  • 这不是关于哪个更好,而是何时使用什么;当使用 HTML5 声明 &lt;!doctype html&gt; 时,不需要在 &lt;script&gt; 标签上使用 MIME 类型提示 type="text/javascript",因为它默认适用。另一方面(非 HTML5),建议使用它(参考 MIME 类型提示 type="text/javascript")。

标签: javascript html


【解决方案1】:

你需要一个类型属性吗?如果您使用的是 HTML5,则不会。否则,是的。 HTML 4.01 和 XHTML 1.0 根据需要指定 type 属性,而 HTML5 将其作为可选属性,默认为 text/javascript。 HTML5 现在已广泛实施,因此如果您使用 HTML5 文档类型,&lt;script&gt;...&lt;/script&gt; 是有效的并且是不错的选择。

关于 type 属性的内容,2006 年注册的 MIME 类型application/javascript 旨在取代text/javascript,目前所有主流浏览器(包括 Internet Explorer 9)的版本都支持。来自the relevant RFC的引用:

因此,本文档定义了 text/javascript 和 text/ecmascript,但将它们标记为“已过时”。不鼓励使用上面部分列出的实验性和未注册的媒体类型。媒体类型,

  * application/javascript
  * application/ecmascript

在本文档中也有定义,旨在供普遍使用,应改为使用。

但是,直到 8 版(包括版本 8)的 IE 不会在 type 属性为 application/javascriptapplication/ecmascript&lt;script&gt; 元素内执行脚本,因此如果您需要支持旧版 IE,您可以重新使用text/javascript

【讨论】:

  • 您并不“需要”type 属性。无论如何,针对 HTML4.01 或 XHTML 1.0 进行验证不再是您应该做的事情,并且所有浏览器都将支持您的标签,而无需 text/javascript
  • @Ian:在撰写本文时,HTML5 规范是一个工作草案,还没有演变成它目前的永久移动目标状态。 HTML5 的浏览器实现远远落后于现在。考虑到这一点,我认为当时的 HTML5 不适合在一般网络上使用,我的回答绝对公平,并且总是带有免责声明“如果您希望您的 HTML 有效”。我同意事情已经发生了变化,这个答案可以与修订有关,但我不同意现在用 HTML 4.01 编写网页总是错误的做法。
  • +1,刚刚从一个骗子那里发现了这个问题。这让我想起了 Anne Van Kesteren 博客上的several posts,包括JavaScript MIME type,他在其中讨论了这个问题。我找不到它,但我确信有一篇文章他建议不要使用type,因为它适用于所有浏览器。也许是别人。
  • 只是想说“谢谢”,因为我试图弄清楚为什么“应用程序/javascript”JS 文件没有在 IE8 及以下版本上执行!
  • 怎么样:“text/javascript;version=1.8”?
【解决方案2】:

两者都可以,但 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 --
  >

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

注意上面的重点。

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

注意:从 HTML5 开始,type 属性不是必需的,是默认属性。

【讨论】:

    【解决方案3】:

    除非您使用的是 html5,否则您需要使用 &lt;script type="text/javascript"&gt; &lt;/script&gt;。在这种情况下,我们鼓励您更喜欢 &lt;script&gt; ... &lt;/script&gt;(因为 type 属性默认指定为该值)

    【讨论】:

      【解决方案4】:

      这就是我们所需要的:

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

      【讨论】:

        【解决方案5】:

        &lt;script type="text/javascript"&gt;&lt;/script&gt; 因为它是正确的方式并且兼容所有浏览器

        【讨论】:

        • 这是 HTML 5 之前的正确方式。HTML 5 在您写此答案之前两年发布。
        【解决方案6】:

        对于 HTML5,&lt;syntax&gt;...&lt;/syntax&gt; 使用起来更好更方便。如果您使用的是 HTML5,则无需显式提及 type = "text/javascript",因为 type 属性默认设置为 "text/javascript",因此完全是可选的。

        【讨论】:

          【解决方案7】:

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

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

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

          【讨论】:

          • 这不是真的
          猜你喜欢
          • 2014-01-13
          • 2011-06-22
          • 2014-11-02
          • 2016-12-12
          • 2017-07-25
          • 2020-07-21
          • 2011-10-12
          • 1970-01-01
          • 2011-06-14
          相关资源
          最近更新 更多