如何改变一个contentscript变量点击Chrome扩展的图标
How to change a contentscript variable on click on the icon of a Chrome extension?
我想通过点击我的Chrome扩展的图标来改变我的contentscript文件中的变量。你知道我该怎么做吗?
下面是我的代码示例:
background.js:
var myVariable = false;
chrome.browserAction.onClicked.addListener(function (tab) { //Fired when User Clicks ICON
chrome.tabs.executeScript(tab.id, {
"file": "zen-reading.js"
}, function () {
console.log("Script Executed .. ");
});
if (myVariable === false) {
chrome.tabs.executeScript({
code: 'myVariable = ' + true + ';'
});
myVariable = true;
}
else {
chrome.tabs.executeScript({
code: 'myVariable = ' + false + ';'
});
zenMode = myVariable;
}
});
contentscript.js:
if (myVariable === true) {
doSomething();
}
if (myVariable === false) {
doSomethingElse();
}
- 方法一:将内容脚本分成两部分,根据
myVariable
的不同注入其中一个。 -
方法2:在注入脚本文件之前注入设置变量的代码:
chrome.tabs.executeScript(tab.id, { code: "var myVariable=" + myVariable.toString() }, function(results) { chrome.tabs.executeScript(tab.id, {file: "zen-reading.js"}, function(results) { .......... }); });
如果不是布尔值/数字,使用JSON:
code: 'var myVariable=JSON.parse("' + JSON.stringify(myVariable) + '")'
-
方法三:注入文件一次,使用消息传递。这有点复杂,因为你需要先检查(使用
executeScript
将寻找一个变量,你的内容脚本应该定义),如果活动选项卡有内容脚本注入,这可能不是情况,如果用户导航到另一个url在同一选项卡
相关文章:
- chrome扩展中的navigator.geolocation.getCurrentPosition
- chrome扩展:尽管运行了at:documentidle,js脚本还是过早启动
- chrome扩展更改主机/域警告
- 如何在chrome扩展中重定向到html页面
- Chrome扩展没有't在重新加载之前考虑期权价值
- 如何通过自己获得Chrome扩展的用户反馈/错误报告
- 如何在chrome扩展中存储数据/结果,以及如何使用setTimeout使其只被调用一次
- 从选项页面更新chrome扩展清单权限
- 如何将chrome扩展功能移植到移动设备(特别是jquery和trello)
- Chrome扩展:遍历不同的页面并收集数据
- 未捕获的类型错误:无法读取属性'addEventListener'的null chrome扩展名
- 可以从Chrome扩展修改窗口对象吗
- 从popup.js|Chrome扩展访问DOM
- 从Chrome扩展名中的popup.html文件在background.js文件中运行一个函数
- 在Chrome扩展内部输出Google API调用
- 检查是否存在使用chrome扩展的javascript库
- 从Chrome扩展访问Google Cloud SQL数据库
- Chrome扩展,Chrome.tabs.query的结果未定义
- 为tweet构建chrome扩展
- 在chrome扩展中使用AJAX获取目录中的文件数