HTML脚本标记中允许哪些语言类型?

Cor*_*rey 23 html w3c script-tag

我正在查看脚本标记W3C规范,我注意到您可以将VBScript和TCL指定为语言类型.这对我来说是非常新的; 我只见过与脚本标签一起使用的Javascript.

为什么其他语言不常用,并且在此标记中是否有完整的语言列表?

Jör*_*tag 24

你可以在那里放任何你想要的东西.这就是整点 MIME类型.

问题当然是您的用户的浏览器是否可以实际解释它.但这并不是特定的<script>元素.例如,我的浏览器只能理解样式表的CSS,其他人也理解XSLT.我的浏览器只能理解文档的HTML,XHTML,HTML5,MathML和SVG,其他人也理解PDF或不理解MathML.我的浏览器理解alpha透明的PNG,而其他人则不然.在GIF专利用尽之前,有些浏览器不了解GIF,而其他浏览器支付了许可费(或者非法使用了专利或者在软件专利非法的司法管辖区开发了这些专利,并且确实理解了GIF).有些浏览器了解H.264视频,有些则了解Theora.

通常,所有浏览器都能保证理解的唯一语言是ECMAScript 3rd Edition.大多数浏览器也了解JavaScript的某些子集.

许多版本的Internet Explorer都了解VBScript.

CoffeeScript编译器可以编译为ECMAScript并嵌入到网站中,因此您可以通过text/coffeescriptMIME类型在页面中使用CoffeeScript .

有一个名为HotRuby的项目,它是一个用ECMAScript编写的YARV字节码解释器.它允许你使用text/ruby.

Microsoft有一个名为Gestalt的项目,它使用在Silverlight内部运行的IronRuby和IronPython来支持text/pythontext/ruby(并且可能是任何可以在DLR之上运行的语言,例如Scheme,Smalltalk,PHP,Tcl).

我相信Mozilla有一个项目不久就被称为IronMonkey,它将多个流行的执行引擎(例如MRI Ruby,CPython,Perl等)嵌入到Firefox中,允许将所有这些语言用于浏览器脚本.

我记得有人在某处建立了一个tcc(微型C编译器)支持插件,可以让你使用text/c.

就在几天前,Miguel de Icaza(Mono的创建者)建议将ISO CLI作为脚本平台添加到浏览器中,允许您通过application/cilMIME类型使用CIL字节码进行脚本编写.

  • 这是历史参考的一个绝妙答案,但[最新规范](https://html.spec.whatwg.org/multipage/scripting.html#attr-script-type)实际上规定脚本标签包含JS,或数据块。(不过,浏览器供应商和其他脚本如何使用数据块是另一个问题。有关在`&lt;script type="text/x-game-map"&gt;`标记中嵌入游戏地图数据的示例,请参阅规范。 ) (2认同)
  • 我怀疑这是否真的“向后不兼容”。规范规定“作者必须使用与 JavaScript MIME 类型本质匹配的有效 MIME 类型字符串来表示数据块”,这似乎表明“text/c”和“text/ruby”等类型仍然有效 - 它只是它们现在被称为“数据块”。然后可能由浏览器或其他脚本来处理这些数据块,其中其他脚本语言可能会发挥作用。 (2认同)

Sar*_*raz 5

为什么没有更常用的其他语言,是否有您可以在此标签中使用的语言的完整列表?

因为 javascript 被所有浏览器支持,不像 VBS 只被 IE 支持。

注意:language属性现已弃用,type仅使用该属性,例如:

<script type="text/javascript">
...
</script>
Run Code Online (Sandbox Code Playgroud)

  • 这就是为什么我在问题中将其称为“语言类型”。虽然从技术上讲这不是一个正确的短语,但我知道“语言”已被贬低,并希望传达这一点(尽管这很困难)。尽管如此,这是一个重要的提醒,因为该属性已贬值,但我仍然偶尔会看到它...... (2认同)