-2

我一直在尝试找出为什么我的 Chrome 扩展程序(未打包)中的注入内容脚本不会加载charsetMIME 类型中的参数(使用 Chrome 28.0.1500.95 stable 测试):

var head = document.head || document.getElementsByTagName('head')[0];
var script = document.createElement('script');
script.src = chrome.extension.getURL("myscript.js");
script.type = 'application/ecmascript;charset=UTF-8';
script.async = false;
script.onload = function () { this.parentNode.removeChild(this); };
head.appendChild(script);

;charset=UTF-8删除部分代码后,脚本会正常加载。但是,当包含该部分时(这似乎是一个有效的 MIME 类型参数),脚本将加载到 DOM,但从未执行。有谁知道为什么会这样?请注意,包含的文件使用 UTF-8 编码(无 BOM,使用十六进制编辑器检查)。

编辑:澄清一下,我想知道为什么该charset参数似乎在 Chrome 中不起作用。

4

2 回答 2

2

我不认为这是您指定的方式charset。即,虽然它可能是对 . 的有效补充type,但浏览器可能只能自动运行text/javascriptapplication/ecmascript独占。我不知道,但试试这个;

script.type = 'application/ecmascript';
script.charset = 'UTF-8';
于 2013-08-03T04:05:59.630 回答
0

事实证明,这是基于对规范的误解。当规范要求不包含字符集时,这意味着您不能包含该;charset=abc位,而不是不能指定 HTML 字符集属性。

于 2013-08-25T15:21:46.793 回答