【问题标题】:What language types are allowed in the HTML script tag?HTML 脚本标签中允许哪些语言类型?
【发布时间】:2011-02-21 18:09:57
【问题描述】:

我在查看W3C specs for the script tag,我注意到您可以将 VBScript 和 TCL 指定为语言类型。这对我来说是非常新的;我只见过与 script 标签一起使用的 Javascript。

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

【问题讨论】:

    标签: html w3c script-tag


    【解决方案1】:

    你可以在里面放任何你想要的东西。这就是 MIME 类型的全部意义

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

    一般来说,唯一保证所有浏览器都能理解的语言是 ECMAScript 第 3 版。大多数浏览器也能理解 JavaScript 的某些子集。

    许多版本的 Internet Explorer 都支持 VBScript。

    CoffeeScript 编译器可以编译成 ECMAScript 并嵌入到网站中,这样您就可以通过 text/coffeescript MIME 类型在您的页面中使用 CoffeeScript。

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

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

    我相信 Mozilla 不久前有一个名为 IronMonkey 的项目,它在 Firefox 中嵌入了多个流行的执行引擎,例如 MRI Ruby、CPython、Perl 等,允许使用所有这些语言来编写浏览器脚本。

    我记得在某处读到有人为 tcc(微型 C 编译器)支持构建了一个插件,这将允许您使用 text/c

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

    【讨论】:

    • 这是历史参考的绝妙答案,但 latest spec 实际上规定脚本标签包含 JS 或数据块。 (不过,浏览器供应商和其他脚本如何使用数据块是另一个问题。有关在<script type="text/x-game-map"> 标签中嵌入游戏地图数据的示例,请参见规范。)
    • 对于一个非常努力不破坏向后兼容性的规范来说,这似乎是一个非常奇怪的向后不兼容的限制。那你如何使用 ECMAScript 以外的脚本语言呢?
    • 我怀疑这是否真的“向后不兼容”。规范说Authors must use a valid MIME type string that is not a JavaScript MIME type essence match to denote data blocks,这似乎表明text/ctext/ruby 这样的类型仍然有效——只是它们现在被称为“数据块”。然后可能由浏览器或其他脚本来处理这些数据块,其他脚本语言可能会发挥作用。
    【解决方案2】:

    我想,您可以指定浏览器可以解释的任何语言。不过,目前,text/javascript 是唯一跨浏览器支持的。

    VBScript 在某些情况下在 IE 中可用,因此(显然)仅限于 Windows 和该浏览器。如果您想构建跨浏览器和平台运行的网站,这不是一个真正的选择。我想你也可以在 IE 中使用Windows Script Host 脚本,但我不熟悉细节。

    您在哪里见过 TCL 的实现?那会很有趣。

    为了完整起见,PHP 理解 <script language="php"> 标签来指定 PHP 块的开始 (reference)。这并不真正计入您的列表 IMO,因为它在服务器端被捕获和解释,并且它只支持已弃用的 language= 语法,但仍然。

    【讨论】:

    • TCL?我从未见过它在任何地方使用过......但是,W3C 页面有一个例子。这就是我提出问题的原因;很奇怪。
    • @Corey 你能发个链接吗?看不到,我在看这里:w3.org/TR/REC-html40/types.html#type-script
    • @Corey 哦,我一定是在搜索时打错了。诡异的!我从未见过 TCL 支持,至少在浏览器中没有。
    • 这很奇怪。这让我想知道是否有任何关于标签支持哪些语言以及哪些浏览器支持它们的文档。
    【解决方案3】:

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

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

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

    <script type="text/javascript">
    ...
    </script>
    

    【讨论】:

    • 这就是为什么我在我的问题中将其称为“语言类型”。虽然从技术上讲不是一个正确的短语,但我知道“语言”已被贬低并希望传达这一点(尽管这很困难)。尽管如此,这是一个重要的提醒,因为该属性已贬值,但我仍然偶尔会看到它......
    猜你喜欢
    • 2014-08-10
    • 2011-01-17
    • 2010-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-26
    • 2020-10-02
    相关资源
    最近更新 更多