我需要使用以下行为进行扩展。 popup.html应该有两个按钮或两个单选按钮(按钮更容易,因为我不必像收音机一样保存所选的值),并且根据用户选择,我必须执行一个或另一个脚本。此外,在加载任一个脚本并且用户想要使用另一个脚本之后,我必须重新加载页面以“卸载”前一个。任何人都可以给我一个方法来实现这个目标吗?
目前我有这个:
popup.js
$(document).ready(function() {
var firstTime = true;
$("input[name='method']").change(function() {
if($(this).val() === "events") {
if(!firstTime) {
chrome.tabs.reload(null, null, function(){
chrome.tabs.executeScript(null, {file: "content_events.js", runAt: "document_end"});
});
} else {
chrome.tabs.executeScript(null, {file: "content_events.js", runAt: "document_end"});
firstTime = false;
}
} else {
if(!firstTime) {
chrome.tabs.reload(null, null, function(){
chrome.tabs.executeScript(null, {file: "content_timer.js", runAt: "document_end"});
});
} else {
chrome.tabs.executeScript(null, {file: "content_timer.js", runAt: "document_end"});
firstTime = false;
}
}
});
});
的manifest.json
"permissions": [
"tabs",
"activeTab",
"<all_urls>"
],
第一次正确加载脚本,但是当我更改它时页面重新加载但新脚本未加载(我认为它是在页面刷新之前加载的)。我尝试了runAt属性的所有可能性,也没有它。我试过没有在tabs.reload的回调函数中注入脚本而没有运气。
感谢您的帮助!
答案 0 :(得分:0)
看起来您希望根据变量的值将Javascript文件注入页面。您可以使用 chrome.tabs.onUpdated 方法设置侦听器,然后调用 chrome.tabs.executeScript 以根据变量的值注入正确的文件。如果您计划在脚本中执行任何DOM操作,请务必侦听窗口加载事件。