【发布时间】:2011-02-21 18:09:57
【问题描述】:
我在查看W3C specs for the script tag,我注意到您可以将 VBScript 和 TCL 指定为语言类型。这对我来说是非常新的;我只见过与 script 标签一起使用的 Javascript。
为什么没有更常用的其他语言,您可以在此标签中使用的语言的完整列表吗?
【问题讨论】:
标签: html w3c script-tag
我在查看W3C specs for the script tag,我注意到您可以将 VBScript 和 TCL 指定为语言类型。这对我来说是非常新的;我只见过与 script 标签一起使用的 Javascript。
为什么没有更常用的其他语言,您可以在此标签中使用的语言的完整列表吗?
【问题讨论】:
标签: html w3c script-tag
你可以在里面放任何你想要的东西。这就是 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/python 和 text/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 字节码进行脚本编写.
【讨论】:
<script type="text/x-game-map"> 标签中嵌入游戏地图数据的示例,请参见规范。)
Authors must use a valid MIME type string that is not a JavaScript MIME type essence match to denote data blocks,这似乎表明text/c 和text/ruby 这样的类型仍然有效——只是它们现在被称为“数据块”。然后可能由浏览器或其他脚本来处理这些数据块,其他脚本语言可能会发挥作用。
我想,您可以指定浏览器可以解释的任何语言。不过,目前,text/javascript 是唯一跨浏览器支持的。
VBScript 在某些情况下在 IE 中可用,因此(显然)仅限于 Windows 和该浏览器。如果您想构建跨浏览器和平台运行的网站,这不是一个真正的选择。我想你也可以在 IE 中使用Windows Script Host 脚本,但我不熟悉细节。
您在哪里见过 TCL 的实现?那会很有趣。
为了完整起见,PHP 理解 <script language="php"> 标签来指定 PHP 块的开始 (reference)。这并不真正计入您的列表 IMO,因为它在服务器端被捕获和解释,并且它只支持已弃用的 language= 语法,但仍然。
【讨论】:
为什么其他语言没有更多 常用的,有没有完整的 您可以在其中使用的语言列表 这个标签?
因为所有浏览器都支持javascript,不像VBS只有IE支持。
注意:language 属性现已弃用,仅使用type 属性例如:
<script type="text/javascript">
...
</script>
【讨论】: