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

标签 javascript html

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

<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 脚本作为外部资源,我们可以进行独立于浏览器的 javascripting 吗?

最佳答案

<强>1。如果脚本没有类型属性,正如我假设的那样,它是否使用浏览器默认类型?

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

相关摘录自the spec :

The type attribute gives the language of the script or format of the data. If the attribute is present, its value must be a valid MIME type. The charset parameter must not be specified. The default, which is used if the attribute is absent, is "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”,在英文中,指的是某物的基本 flavor 。在计算中,它通常指的是一种没有添加或插件的语言。这里指的是没有附加库的 JavaScript(例如 jQuery)。这个表达通常意味着重申很多事情没有图书馆也是可能的,即使人们经常认为图书馆是必要的。 vanilla-js网站幽默地支持这一论点,这也是您可能经常阅读“vanilla js”表达的另一个原因。所以,当然,“vanilla js”只是 JavaScript,也就是“纯 js”。

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

关于javascript - 各种脚本类型属性和 vanilla js,是什么让用户代理有所不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14799601/

相关文章:

javascript在div中移动图像

javascript - 通过 Google Chrome 扩展从注入(inject)的 html 调用带有 ng 指令的函数

html - 如何使用 CSS 重定向

javascript - mongodb 评论教程

javascript - JS - 停止 DIV 并在位置添加类

CSS - 等高列?

javascript - 使用 NodeJS 从外部页面返回 Javascript 变量数据

html - 删除每隔两行的边框底线

javascript - 如何删除变量?

javascript - 如果选中复选框,则显示 Bootstrap 模式