我正在尝试将我的 Chrome 扩展迁移到清单 2。当前版本使用一个 background.html 页面,该页面基本上是一个大脚本标签。由于这不再可能,我转而使用 background.js 脚本,经过大量搜索和实验,仍然无法从外部文件注入脚本。在当前版本中,我只使用 document.write 来注入一个脚本标签,该标签将在浏览器加载时运行,但我现在还没有找到方法来执行此操作。
我知道 chrome.tabs.onUpdated.addListener 函数以及使用 XMLHttpRequest 对象为每个选项卡更新注入脚本的能力,但是我要运行的脚本应该只在浏览器加载时才这样做。
当前代码(在 background.html 文件中的脚本标记中):
document.write("<script type='text/javascript' src='" + url + "'></script>");
在 background.js 文件中,这会导致错误:拒绝加载脚本“http://www.mydomain.com/script.js”,因为它违反了以下内容安全策略指令:“script-src 'self'铬扩展资源:“。
我尝试了各种代码,包括:
var s = document.createElement('script');
s.src = chrome.extension.getURL(url);
s.onload = function() {
this.parentNode.removeChild(this);
};
(document.head||document.documentElement).appendChild(s);
但似乎这仅适用于本地脚本文件,而我需要加载外部在线文件。