繁体   English   中英

有什么有用的哑剧吗<script type=“mime” src=“…”> except for JS?

[英]Is there any useful mime for <script type=“mime” src=“…”> except for JS?

通过大量阅读,我得出结论:

<script>标记可以存储数据,但是只有在不使用src情况下才可以访问。

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

我发现.innerText.innerHTML.toString无法访问“文本/ javascript”(与“应用程序/ javascript”相同)(希望我在这里错过了一些内容)。 但是它可以执行,这是可以在没有浏览器扩展的情况下使用外部<script>完成的唯一一件事-我想。 因为使用src所以无法以任何方式访问数据?

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


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

根据whatwg.org ,模式<script type src>对除Javascript以外的任何mime类型都没有用:

将属性设置为任何其他值意味着脚本是一个数据块,未经处理。 脚本属性(类型本身除外)都不会对数据块产生任何影响。

因此,将type设置为Javascript以外的任何其他值都会使src无效,并且<script>成为数据块不是那么有用,因为作为唯一将数据放入其中的变量,应该将数据更好地存储到div

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

除非您有.json文件,并且服务器在响应标头中发送适当的MIME类型,否则并非特别如此。 否则,将不处理<script>标记的内容。

根据WHATWG规范

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

  • 省略属性,将其设置为空字符串或将其设置为JavaScript MIME类型本质匹配,意味着该脚本是经典脚本,将根据JavaScript脚本顶级产品进行解释。 经典脚本受asyncdefer属性的影响,但仅当设置了src属性时才受影响。 作者应该忽略type属性,而不是多余地设置它。

  • 将属性设置为字符串“ module ”的ASCII大小写不敏感匹配,表示该脚本是模块脚本。 如果它具有JavaScript MIME类型,或者脚本是嵌入式嵌入的,那​​么根据JavaScript模块顶级产品,它将被解释为JavaScript模块脚本;否则,它将被解释为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类型来触发它们,例如“ module”值表示模块脚本的方式。 现在通过使用有效的MIME类型字符串,可以确保即使在以后的用户代理中,也不会将数据块重新解释为其他脚本类型。

WHATWG 在此处定义了有效的MIME类型。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM