【问题标题】:Is there any useful mime for <script type="mime" src="..."> except for JS?<script type="mime" src="..."> 除了 JS 有什么有用的 mime 吗?
【发布时间】:2019-12-12 12:58:48
【问题描述】:

从大量阅读中我得出结论:

&lt;script&gt; 标签可以存储数据,但只有在不使用src 时才能访问。

我想使用src,因为这是我的脚本加载器的工作方式。 那么 type 属性和每个 mime-types 是无用的还是什么?...

我发现.innerText.innerHTML.toString 无法访问“text/javascript”(与“application/javascript”相同)(希望我在这里遗漏了一些东西)。 但它可以被执行,这是唯一可以在没有浏览器扩展的情况下使用外部&lt;script&gt; 完成的事情——我猜。由于使用了src,因此无法访问数据?

我希望我错了,因为我想扩展我的脚本加载器来加载可以读取的 mime 类型。有没有?请告诉我任何/一些可访问的 mime 类型以在外部动态加载。


更新 - 谢谢你的回答 - 现在我得出结论:

根据whatwg.org&lt;script type src&gt; 模式对于除 Javascript 之外的任何 mime 类型都没有用处:

将属性设置为任何其他值意味着脚本是 数据块,未处理。没有任何脚本属性 (类型本身除外)对数据块有任何影响。

因此,将type 设置为 Javascript 以外的任何其他值会使src 无效,并且&lt;script&gt; 成为一个数据块 不太有用,因为变量是唯一的将数据放入其中的方法应该更好地将数据存储到div

typesrc 永远不会在 script 中一起工作(这会带来安全风险),因为 importfetch 已经是加载文件的新方法。在没有 CORS 的服务器上无法加载 E6 导入的情况下,仍然可以使用脚本加载器。

【问题讨论】:

    标签: javascript mime-types script-tag dynamic-script-loading


    【解决方案1】:

    不是特别的,除非你有一个.json 文件并且服务器在响应头中发送了适当的 MIME 类型。否则&lt;script&gt;标签的内容将不会被处理。

    根据WHATWG specification

    type 属性允许自定义表示的脚本类型:

    • 省略属性,设置为空字符串,或者设置为JavaScript MIME类型本质匹配,表示该脚本为经典脚本,按照JavaScript Script顶层制作进行解释。经典脚本受asyncdefer 属性的影响,但仅在设置了src 属性时。作者应该省略type 属性,而不是多余地设置它。

    • 将属性设置为字符串“module”的不区分大小写的 ASCII 匹配意味着脚本是模块脚本。如果它有一个 JavaScript MIME 类型,或者如果脚本是内嵌的,那么它会根据 JavaScript Module 顶层生产被解释为一个 JavaScript 模块脚本;如果它具有 JSON MIME 类型,那么它将被解释为 JSON 模块脚本。模块脚本不受defer 属性的影响,但受async 属性的影响(无论src 属性的状态如何)。

    • 将属性设置为任何其他值意味着脚本是一个数据块,不被处理。 script 属性(type 本身除外)对数据块没有任何影响。作者必须使用不是 JavaScript MIME 类型本质匹配的有效 MIME 类型字符串来表示数据块。

    JavaScript MIME 定义为以下任何一种:

    • application/ecmascript
    • application/javascript
    • application/x-ecmascript
    • application/x-javascript
    • text/ecmascript
    • text/javascript
    • text/javascript1.0
    • text/javascript1.1
    • text/javascript1.2
    • text/javascript1.3
    • text/javascript1.4
    • text/javascript1.5
    • text/jscript
    • text/livescript
    • text/x-ecmascript
    • text/x-javascript

    JSON MIME 定义为

    子类型以“+json”结尾或本质为“application/json”或“text/json”的任何 MIME 类型。

    请务必注意,您必须使用有效的 MIME 类型,以确保浏览器永远不会尝试处理它。否则,未来对规范的补充可能会破坏您的代码:

    要求数据块必须使用有效的 MIME 类型字符串来表示,以避免未来潜在的冲突。如果本规范添加了其他类型的脚本,它们将通过将type 属性设置为非 MIME 类型来触发,例如“模块”值如何表示模块脚本。通过现在使用有效的 MIME 类型字符串,您可以确保您的数据块永远不会被重新解释为不同的脚本类型,即使在未来的用户代理中也是如此。

    有效的 MIME 类型由 WHATWG here 定义。

    【讨论】:

    • 我会仔细阅读。我有两个不满意的 JSON 选项卡:stackoverflow.com/questions/7581133/…stackoverflow.com/questions/13515141/…
    • @PauliSudarshanTerho 关于这两个问题,您到底想问什么?
    • @PauliSudarshanTerho 如果您想知道为什么 json 导入不起作用,我想那是因为它是 recently added to the WHATWG spec,而供应商尚未实现它。
    • 我不知道如何/如果
    • 将是,但似乎没有基于从 GitHub 问题链接的问题跟踪器实现。以后应该可以做&lt;script type='application/json'&gt;或者做import foo from './bar.json';
    猜你喜欢
    • 2014-03-06
    • 2015-09-21
    • 2012-08-27
    • 2011-02-11
    • 2020-02-14
    • 2021-06-18
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多