我想模仿 的效果window.location.reload()
,但仅限于我的内容脚本正在运行的“孤立世界”。也就是说,删除所有现有的 JS,尤其是回调和事件绑定。有没有很好的方法来做到这一点?
注意:chrome.runtime.reload()
不适用于此;它具有重新加载扩展和后台脚本的效果,但在用户刷新之前它不会重新加载现有的内容脚本。
我想模仿 的效果window.location.reload()
,但仅限于我的内容脚本正在运行的“孤立世界”。也就是说,删除所有现有的 JS,尤其是回调和事件绑定。有没有很好的方法来做到这一点?
注意:chrome.runtime.reload()
不适用于此;它具有重新加载扩展和后台脚本的效果,但在用户刷新之前它不会重新加载现有的内容脚本。
据我所知,没有自动重新注入内容脚本的方法,例如在扩展更新期间。您可以做的是找到其 url 与您需要的模式匹配的所有选项卡,并以编程方式使用chrome.tabs.executeScript
.
请注意,此方法需要为与您的内容脚本使用的 URL 模式相同的 URL 模式添加权限。
清单.json:
"content_scripts":
[
{
"matches": [ "http://*.google.com/*" ],
"js": [ "content_script.js" ]
}
],
"permissions":
[
"tabs", "http://*.google.com/*"
]
背景.js:
chrome.runtime.reload();
chrome.tabs.query({ url: "http://*.google.com/*" }, function(tabs)
{
for(var i = 0; i < tabs.length; i++)
{
chrome.tabs.executeScript(tabs[i].id, { file: "content_script.js" }, function() {});
}
});