我希望模仿 window.location.reload()
的效果,但仅限于我的内容脚本所在的“隔离世界”。也就是说,删除所有现有的JS,特别是回调和事件绑定。有没有一种好的方法来做到这一点?
注意:chrome.runtime.reload()
对此无效;它会重新加载扩展和后台脚本,但不会重新加载现有的内容脚本,直到用户刷新。
我希望模仿 window.location.reload()
的效果,但仅限于我的内容脚本所在的“隔离世界”。也就是说,删除所有现有的JS,特别是回调和事件绑定。有没有一种好的方法来做到这一点?
注意:chrome.runtime.reload()
对此无效;它会重新加载扩展和后台脚本,但不会重新加载现有的内容脚本,直到用户刷新。
chrome.tabs.executeScript
重新注入内容脚本。Manifest.json:
"content_scripts":
[
{
"matches": [ "http://*.google.com/*" ],
"js": [ "content_script.js" ]
}
],
"permissions":
[
"tabs", "http://*.google.com/*"
]
Background.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() {});
}
});
chrome://extension
重新加载扩展程序后注入代码时,你将无法访问之前的变量。你测试过了吗? - vaughan