3

我通常编写没有类型属性的脚本标签。但是,我看到了几种不同类型的脚本。所以我用不同的类型进行了测试,除了我故意输入错误的类型之外,所有的看起来都一样。

<script>alert(1)</script>
<script type="text/javascript">alert(2);</script>
<script type="text/ecmascript">alert(3);</script>
<script type="application/ecmascript">alert(4);</script>
<script type="application/javascript">alert(5);</script>
<script type="foo/javascript">alert(6);</script>
<script type="text/html">alert(7);</script>
<script type="application/x-javascript">alert(8);</script>

问题:

  1. 如果给出的脚本没有 type 属性,如我所料,它是否使用浏览器默认类型?

  2. 看起来 text/* 用于浏览器,而 application/* 用于移动应用程序。我说得对吗?

  3. 在脚本类型属性中,javascript 和 ecmascript 有什么区别?

  4. 我问了关于香草js和纯js之间的问题,但问题已被删除。所以我的猜测是它们是相同的(也许太明显了)。真的一样吗?那为什么要使用不同的名称(Javascript,Vanilla Javascript)?通过使用 vanilla 脚本作为外部资源,我们可以进行独立于浏览器的 javascripting 吗?

4

1 回答 1

2

1. 如果脚本没有 type 属性,如我所料,它是否使用浏览器默认类型?

是的。所有的浏览器总是假定它是这样的,现在它已经在 HTML5 中被规范化了。根据 w3.org,type 属性默认为"text/javascript".

规范的相关摘录:

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

因此,对于所有浏览器,放置脚本的最佳方式是:

<script>alert(1);</script>

2. 看起来 text/* 用于浏览器,而 application/* 用于移动应用程序。我说得对吗?

如果script元素包含在 HTML 文档中,那么type属性的值应该被省略,或者"text/javascript",即使在移动应用程序中也是如此。过去有各种情况建议其他类型,但现在标准是"text/javascript".

3.在脚本类型属性中,javascript和ecmascript有什么区别?

没有区别。您可能知道ECMAScript是基于 JavaScript 的规范化标准的名称。不仅是"text/javascript"在脚本元素中引用 javascript 的标准方式,而且您的浏览器只有一个 JS 引擎。它不能根据您在 type 属性中指定的风格选择尝试并选择另一个。

4.我问了vanilla js和pure js之间的问题,但问题已被删除。所以我的猜测是它们是相同的(也许太明显了)。真的一样吗?那为什么要使用不同的名称(Javascript,Vanilla Javascript)?通过使用 vanilla 脚本作为外部资源,我们可以进行独立于浏览器的 javascripting 吗?

“Vanilla something”在英文中是指某物的基本风味。在计算中,它通常是指一种没有添加或插件的语言。这里它意味着 JavaScript 没有额外的库(例如 jQuery)。这个表达通常意味着重申许多事情在没有库的情况下是可能的,即使人们经常认为图书馆是必要的。vanilla-js网站幽默地支持这一论点,这也是您可能经常阅读“vanilla js”表达式的另一个原因。所以,当然,“vanilla js”只是 JavaScript,即“纯 js”。

请注意,“vanilla js”并不是特别“独立于浏览器”,因为许多 js 库的主要目标是提供一个统一的层隐藏浏览器之间的差异(除了 IE 之外的所有浏览器中最常见的功能)。

于 2013-02-13T14:04:11.327 回答