【问题标题】:Difference between <script> tag with type and <script> without type? [duplicate]带类型的 <script> 标记和不带类型的 <script> 之间的区别? [复制]
【发布时间】:2012-03-11 21:26:34
【问题描述】:

可能重复:
Should I include type=“text/javascript” in my SCRIPT tags?

我在写html的时候发现即使script标签里的type没有设置成javascript,标签里的javascript代码还是可以求值的。

所以我只是想知道带有类型的脚本标签和没有类型的脚本标签有什么区别?

【问题讨论】:

标签: javascript html


【解决方案1】:

在 HTML 4 中,the type attribute is required。根据我的经验,如果不存在,所有浏览器都将默认为text/javascript,但该行为未在任何地方定义。虽然理论上你可以忽略它并假设它会被解释为 JavaScript,但它是无效的 HTML,所以为什么不添加它。

在 HTML 5 中,type 属性是可选的,defaults to text/javascript:

type 属性给出了脚本的语言或数据的格式。如果该属性存在,则其值必须是有效的 MIME 类型。不得指定 charset 参数。如果该属性不存在,则使用默认值是“text/javascript”。

【讨论】:

  • 在我看来,这是唯一真正正确的答案。
  • @animuson。由于实用性,每个浏览器都可以在没有它的情况下运行,所有答案都是正确的!
  • @gdoron:不,他们不是。 OP询问两者之间的区别,而不是它们是否可以在浏览器中工作。 这个答案解释了这一点。我在这里看到的其他人都只是很差而且缺乏信息,代表了对type 属性真正作用的明显误解。
  • @animuson:您假设 OP 意味着规范上的差异,而不是现实世界中实践上的差异。您能否指出问题中最终表明您的解释是正确的部分?
  • @amnotiam:一点也不,但至少这个答案实际上解释了一些差异。三个底部的答案只是说“它取决于浏览器”,这实际上根本没有任何意义,因为它只是略微正确。这取决于您使用 HTML4 的浏览器 if 并且您没有指定类型。关键是,它在 HTML4 中是必需的(只有 HTML5 定义了默认值),所以它不应该依赖于浏览器。这些信息在哪里?
【解决方案2】:

大多数浏览器默认为text/javascript,但在设置类型时最好明确。

【讨论】:

    【解决方案3】:

    类型

    此属性标识嵌入在脚本元素中或通过元素的 src 属性引用的代码的脚本语言。这被指定为 MIME 类型;支持的 MIME 类型的示例包括 text/javascript、text/ecmascript、application/javascript 和 application/ecmascript。 如果此属性不存在,则将脚本视为 JavaScript。

    MDN docs

    【讨论】:

      【解决方案4】:

      这取决于浏览器。浏览器曾经支持 VBScript 和 Javascript(以及其他)在很大程度上是历史性的。

      【讨论】:

        【解决方案5】:

        关闭“类型”可能会导致某些浏览器出现错误。

        【讨论】:

        • 请举个例子。您是在谈论当今使用的浏览器吗?
        • 没有浏览器示例,抱歉。我在谈论理论和一般编程原则 - 不仅适用于 html/scripts/etc。当元素定义良好时,程序运行速度通常更快,因为核心代码的解释更简单。示例 - 您当然不需要添加 宽度和高度,因为现代浏览器无论如何都会读取它,但由于某些原因,最好添加此参数。返回 type=“text/javascript”。如果没有类型,我确定这里不会出错,但浏览器需要多一步来解释它。简而言之,当没有这样的“错误”时,页面加载速度会更快。
        • 好吧,我建议在未定义时解释更简单,因为这样会简单地替换默认值,而不必读取/解释提供的值。对于图像宽度/高度,它有点不同。这是因为浏览器在元素到达时绘制页面。如果图像没有宽度/高度,浏览器将不知道它的大小。这意味着当图像加载完成后,页面需要重新绘制。提供大小可避免为每个图像重绘此页面。此外,它可以在 CSS 中完成;它不需要通过元素属性。
        猜你喜欢
        • 2018-12-08
        • 1970-01-01
        • 2018-01-27
        • 2012-12-09
        • 1970-01-01
        • 1970-01-01
        • 2021-01-12
        • 2013-11-17
        • 2013-10-05
        相关资源
        最近更新 更多