我正在尝试在用户点击浏览器操作时对网页执行JavaScript代码。它工作得非常好,当我试图将它放在背景页面上时,它搞砸了。 我希望特定代码执行一次,当再次单击图标时,运行不同的代码。我试着做以下几点。
//Background page
<Script>
function goNow() {
var live = 2;
chrome.tabs.executeScript(null,
{code:"Code"});
}
function Shutdown(){
var live = 1;
chrome.tabs.executeScript(null,
{code:"Code"});
}
function runLive(live){
if (live==1) {goNow()}
else {Shutdown()}
}
chrome.browserAction.onClicked.addListener(runLive)
</script>
当然,“代码”是JavaScript代码,在注入页面时效果非常好。
答案 0 :(得分:3)
chrome.browserAction.onClicked.addListener
将标签对象传递给回调函数,您不能只在那里传递自己的参数。
在函数内声明变量(使用var
关键字)使其仅在此函数内可用。
您的代码应该是这样的:
//global variable
var live = 1;
function goNow() {
live = 2;
chrome.tabs.executeScript(null, {code:"Code"});
}
function Shutdown(){
live = 1;
chrome.tabs.executeScript(null, {code:"Code"});
}
function runLive(tab){
if(live==1){goNow()}
else{Shutdown()}
}
chrome.browserAction.onClicked.addListener(runLive);