google-chrome-extension - 将 jQuery 注入当前标签页 - chrome 扩展
问题描述
我是 chrome 扩展的新手,所以我可能使用了错误的术语。
我创建了一个扩展
清单.json
{
"name": "Run code in page",
"version": "1.1",
"manifest_version": 2,
"content_scripts": [{
"js": ["contentscript.js"],
"matches": ["https://*/*"]
}],
"web_accessible_resources": ["*.js"],
"default_locale": "en"
}
内容脚本.js
function injectScript(script) {
var s = document.createElement('script');
s.src = chrome.extension.getURL(script);
(document.head || document.documentElement).appendChild(s);
}
injectScript('script.js');
injectScript('otherscript.js');
脚本.js
console.log('script.js');
其他脚本.js
console.log('otherscript.js');
这有效,我在输出中看到了这一点:
script.js
otherscript.js
一切都很好,两个脚本都在加载,我需要以相同的方式添加 jQuery,以便我可以从我的脚本中访问 jQuery。
所以我
injectScript('jquery.js');
但现在我收到以下错误
Denying load of chrome-extension://abdiolbenneaffeaedmfeeanlephlnoo/jquery.js. Resources must be listed in the web_accessible_resources manifest key in order to be loaded by pages outside the extension.
如果我查看 DOM,我会看到这个
<script src="chrome-extension://abdiolbenneaffeaedmfeeanlephlnoo/script.js"></script>
<script src="chrome-extension://abdiolbenneaffeaedmfeeanlephlnoo/otherscript.js"></script>
<script src="chrome-extension://abdiolbenneaffeaedmfeeanlephlnoo/jquery.js"></script>
如果我将 chrome-extension://abdiolbenneaffeaedmfeeanlephlnoo/jquery.js 放入 URL 中,我可以访问它。
- 编辑
如果我在外部加载 jquery,它将加载,所以我想我可以这样做。例如
function injectExternalScript(script) {
var s = document.createElement('script');
s.src = script;
(document.head || document.documentElement).appendChild(s);
}
injectExternalScript('https://code.jquery.com/jquery-3.3.1.min.js');
解决方案
这真的很奇怪。您可能检查了jquery.js
文件是否在根文件夹中并使用此名称,对吗?
好吧,就我而言,我想在所有匹配的页面中添加 jQuery,content_scripts > matches
所以我只是做了这样的事情:
...
"content_scripts": [
{
"matches": [
"https://*/*"
],
"js": [
"assets/js/jquery.js",
"assets/js/contentscript.js"
]
}
],
...
所以通过这种方式我可以在contentscript.js
文件中使用 jQuery。
推荐阅读
- c# - StreamWriter 变量声明延迟
- python - 在 DAI 中部署期间,用于对新预测进行评分的最终阈值是什么/在哪里?
- java - 如何像许多自定义启动器一样制作“向上滑动”功能?
- python - 使用 tfrecordwriter 循环功能时,将 numpy 写入 tfrecord 很慢
- dmarc - DMARC 记录需要多长时间才能被识别?
- google-cloud-platform - 如何在 GCP ML Engine 中创建模型的多个版本?
- javascript - 如何通过 webpack 在构建时调用函数?
- django - 循环中的相关项目会创建许多重复查询
- java - CPU gets pegged - Problem with java.util.zip.ZStreamRef
- python-3.x - Better way than pass the same argument among classes in Python