"content_ scripts”;不适用于chrome v38+
"content_scripts" not working in chrome v38+?
最近,我做了一个Chrome扩展,强制所有网页使用给定的字体。它过去工作得很好,但从昨天(也许更早)起就停止工作了。
扩展的关键代码是:
manifest.json
文件内容:{ ... "content_scripts": [{ "matches": ["http://*/*", "https://*/*"], "js": ["font.js"], "run_at":"document_start" }], "web_accessible_resources": ["font.css"] }
font.js
文件内容:var link = document.createElement("link"); link.href = chrome.extension.getURL("font.css"); link.type = "text/css"; link.rel = "stylesheet"; document.documentElement.insertBefore(link);
font.css
文件内容:* { font-family: "Microsoft Yahei Mono", "Microsoft Yahei", sans-serif !important; }
有人能告诉我这里发生了什么吗?或者建议在启动网页文档时运行js
文件的其他方法吗?
与Chrome 38一样,Chrome遵循DOM标准,并在.insertBefore
省略所需参数时抛出异常(请参阅https://crbug.com/419780)。
要修复代码,请使用
document.documentElement.insertBefore(link, null);
// or equivalently,
document.documentElement.appendChild(link);
我建议使用"css"
键而不是内容脚本来插入样式表。那么您就不再需要font.js
了(安装后也会立即应用样式表)。
{
"manifest_version": 2,
"name": "my extension",
"version": "1.0",
"content_scripts": [{
"matches": ["http://*/*", "https://*/*"],
"css": ["font.css"],
"run_at":"document_start"
}]
}
相关文章:
- html5 drawImage适用于firefox,而不是chrome
- Jquery Ajax POST不工作.适用于GET
- 如何调试遗留的javascript代码(适用于IE,但在Google Chrome中不正常)
- .load()适用于window,而不是ID
- 使用Jquery更改css样式适用于id's、 不在课堂上
- 提交按钮不会;不适用于Chrome或Firefox,但适用于Internet Explorer
- 为什么 javascript 中的“btoa”编码适用于 20 位字符串而不是 20 位整数
- Javascript String to Date适用于Chrome,而不是FF或Safari
- Onchange,向上,向下箭头键适用于FF和Chrome,但在IE中不起作用
- .load() 适用于 IE 和 dreamweaver 预览版,但不能使用 opera 和 chrome
- 找不到适用于 Highcharts 的 JSON 数组语法
- 为什么在jQuery中使用focusout适用于Firefox,而使用addEventListener则不适用;t
- jQuery选择菜单验证器适用于FF和Chrome,但不适用IE
- 单选按钮'onclick'适用于Chrome和Firefox,但不适用IE
- JQuery ScrollTop适用于chrome,但不适用firefox
- window.opener.location.href适用于IE,但不适用Chrome或Safari
- Frame Busting buster不完全适用于IE
- Jquery touch punch适用于Chrome和Firefox,但不适用IE
- 背景更改仅适用于chrome+$.预加载不适用;不起作用
- JavaScript window.location.replace适用于Firefox,但不适用IE或Chrome