Google chrome extension 动态更改chrome.browserAction.onClicked行为

Google chrome extension 动态更改chrome.browserAction.onClicked行为,google-chrome-extension,Google Chrome Extension,你好 我有一个简单的chrome扩展,可以更改网页的DOM(更准确地说,它可以对评论进行排序)。我有一个background.js,其中包含以下代码: chrome.browserAction.onClicked.addListener(function(tab) { chrome.tabs.executeScript( null, {file : "app.js"});

你好

我有一个简单的chrome扩展,可以更改网页的DOM(更准确地说,它可以对评论进行排序)。我有一个background.js,其中包含以下代码:

chrome.browserAction.onClicked.addListener(function(tab) {
  chrome.tabs.executeScript(
      null, {file : "app.js"});                                                                                                                                                                         
});
所以当我点击扩展的图标时,app.js就会执行

我想通过第二次单击图标来重置所有更改。理想情况下,如果我第三次单击图标,页面将再次排序,依此类推。有没有一个简单的方法可以做到这一点


提前谢谢你

没有办法让Chrome自动撤销
app.js
对页面DOM所做的更改,但是你可以让
app.js
撤销自己的修改。检测
app.js
是否正在第二次运行(从注入的脚本中设置一个全局变量),或者每个选项卡注入一次脚本,并告诉它将页面放入哪个状态


在每个选项卡中只注入一次脚本而不使其成为内容脚本看起来很棘手,这会阻止您使用即将到来的权限,因此使用
app.js
记住可能更好,除非您已经出于其他原因确保单次注入。

第二次单击图标时是否可以重新加载页面?或者你想在不重新加载页面的情况下撤销app.js所做的所有更改?@Emily,我可以存储注释树的初始状态,所以我想使用它,而不仅仅是重置并重新加载所有.Hmm,因此如果你有一个全局标志变量,那么在你的
浏览操作中。单击
处理程序,如果标志为false,调用
executeScript
,如果该标志为真,则重置注释,然后切换该标志,这对您有效吗?我是不是误解了你的问题?谢谢你,艾米丽,你对形势的看法完全正确,我会尝试用这种方式来解决我的问题。谢谢你,杰弗里,我想全局变量对我来说是可行的