Chrome扩展程序未加载注入的脚本" charset"在MIME类型中

时间:2013-08-03 03:20:10

标签: javascript google-chrome character-encoding google-chrome-extension mime-types

我一直试图找出为什么我的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中运行。

2 个答案:

答案 0 :(得分:2)

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

script.type = 'application/ecmascript';
script.charset = 'UTF-8';

答案 1 :(得分:0)

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