使用类型=“0”;text/plain”;用于JavaScript

Using type="text/plain" for JavaScript?

本文关键字:plain 用于 JavaScript text 类型      更新时间:2023-09-26

我只是出于好奇才考虑设置它,但当他们说要让它发挥作用时,我有点困惑:

查找设置Analytics cookie的任何Javascript元素。示例可能包括Google Analytics和StatCounter。修改脚本标记,使类型属性为"text/plain"而不是"text/javascript"

这会导致某些网络浏览器出现问题吗?它会导致HTML不再有效吗?

此外,"类型"属性真的有作用了吗?我以前只见过它被分配为"text/JavaScript"?

如果浏览器不将元素的内容解释为脚本代码,而只是将其解释为未呈现的文本数据,则不会造成问题。它是供脚本使用的,但在其他方面它会被忽略。在某些浏览器中,可以使用CSS使内容可见,但默认情况下不会显示。

根据HTML规范,使用<script type="text/plain">是有效的。即使<script type="Hello world ☺">也是有效的,尽管它违反了属性值是MIME类型的散文要求。规范没有具体说明它的含义,但唯一可行的解释,以及浏览器在实践中所做的,是它没有使用任何脚本语言,也没有在尝试脚本时执行。

因此,type="text/plain"可以用于有意阻止脚本的执行,同时仍将其保留在源代码中。它还可以用于携带用于某些处理的大量字符数据。

type属性可以用于类似的目的,也可以用于指定JavaScript以外的脚本语言(很少使用,但在某些环境中仍然可以使用)。不需要仅使用type属性来指定JavaScript,也不推荐使用:唯一可能出现的错误是:如果键入错误,例如type="text/javascirpt",则内容将被视为使用未知语言,因此被忽略。

这会导致某些网络浏览器出现问题吗?

它会导致HTML不再有效吗?

此外,"类型"属性真的不再是一个目的吗?

浏览器使用它来决定通过哪个解释器运行代码(或者是否应该从外部下载srced代码)。

将其设置为text/plain会将其设置成浏览器没有解释器的类型(因为它不是一种编程语言),这就是重点。

给JS代码提供text/plain类型是完全可以的,并且会有效地禁用它。要在页面加载后启用脚本,您需要有JS代码来动态地将类型重写为text/javascript。Cookie阻塞就是一个常见的例子。插入一个带有text/plain的cookie设置脚本,并在用户同意cookie时更改为text/javascript。这将立即在当前页面上执行脚本,无需重新加载。