打开后如何停止我的镀铬扩展?

时间:2016-12-06 13:07:47

标签: javascript google-chrome google-chrome-extension

我目前正在开发一个包含background.js和content_scripts.js的chrome扩展程序。在content_scripts中,我添加了一些" event.preventDefault"  在所有元素中,还在页面上添加了一些元素。但是,当用户第二次点击我的扩展程序时,我希望"关闭"我的扩展程序并取消我的扩展程序所做的所有更改。

是否有一种简单的方法可以做到这一点,还是我必须处理我个别所做的所有更改?

2 个答案:

答案 0 :(得分:1)

不,如果不重新加载页面,通常无法轻松撤消所有更改。是的,如果您希望撤消所有更改,则必须自行撤消。如果您的扩展程序被禁用,或者您调用了特定的API,那么您的更改不会进行任何魔术录音,而是会为您提供支持。

有一些明显的策略可以这样做:

  • 记住您所做的更改并逐个撤消它们(撤消更改,删除事件侦听器等)。所需要的内容取决于您的扩展程序所执行的操作以及您希望将其保留的状态。您可以使用chrome.tabs.sendMessage()轻松地向内容脚本发送消息,指示它应禁用自身和/或撤消任何更改。
  • 重新加载页面
  • 存储至少部分页面的初始状态并将其恢复。这可能很难做到,而且在通用页面上可能是不可能的。您必须知道所有事件侦听器以及可能由页面中的JavaScript设置的其他状态信息。

答案 1 :(得分:-1)

试试这个。

if(localStorage.getItem('firstClick')==='true'){
    localStorage.setItem('firstClick', 'false');
    chrome.tabs.executeScript(null, {file: "contentscript.js"});
}

else {
    localStorage.removeItem('firstClick');
    localStorage.set('firstClick', 'true')
}