我一直试图找出为什么我的Chrome扩展程序(未打包)中的注入内容脚本无法加载MIME类型中的charset
参数(使用Chrome 28.0.1500.95稳定版测试):
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中运行。
答案 0 :(得分:2)
我认为这不是你指定charset
的方式。即虽然它可能是type
的有效补充,但浏览器可能只会自动独立运行text/javascript
和application/ecmascript
。我不知道,但试试这个;
script.type = 'application/ecmascript';
script.charset = 'UTF-8';
答案 1 :(得分:0)
事实证明,这是基于对规范的误解。当规范要求不包含charset时,这意味着您不能包含;charset=abc
位,而不能指定HTML charset属性。