各种脚本类型属性和vanilla-js,是什么让用户代理与众不同

Various script type attributes and vanilla js, what makes difference in user agents

本文关键字:是什么 用户代理 与众不同 vanilla-js 脚本 类型 属性      更新时间:2023-09-26

我通常编写没有类型属性的脚本标记。然而,我看到了几种不同类型的脚本。所以我测试了不同的类型,在我看来都是一样的,只是我故意放错了类型。

<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. 如果脚本没有类型属性,正如我所假设的,它使用浏览器默认类型吗?

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

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

  4. 我问了香草js和纯js之间的问题,但这个问题已经被删除了。所以我猜他们是一样的(可能太明显了)。真的一样吗?,那么为什么要使用不同的名称(Javascript、Vanilla Javascript)呢?通过使用vanilla脚本作为外部资源,我们可以执行独立于浏览器的java脚本吗?

1。如果脚本没有类型属性,正如我所假设的,它使用浏览器默认类型吗

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

规范的相关摘录:

type属性提供脚本的语言或数据如果属性存在,则其值必须是有效的MIME类型不能指定字符集参数。默认值如果属性不存在,则使用"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.我问了香草js和纯js之间的问题,但这个问题已经被删除了。所以我猜他们是一样的(可能太明显了)。真的一样吗?,那么为什么要使用不同的名称(Javascript、Vanilla Javascript)呢?通过使用vanilla脚本作为外部资源,我们可以执行独立于浏览器的java脚本吗

在英语中,"Vanillasomething"指的是某种东西的基本味道。在计算中,它通常指的是一种没有添加或插件的语言。这里的意思是没有附加库的JavaScript(例如jQuery)。这个表达通常是为了重申没有图书馆的许多事情是可能的,即使人们经常认为图书馆是必要的。vanilla-js网站幽默地支持这一论点,这也是你经常阅读"vanilla-j"表达式的另一个原因。当然,"vanilla-js"只是JavaScript,也就是"纯js"。

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