在 chrome 扩展中删除注入的脚本

abh*_*ash 5 javascript google-chrome google-chrome-extension

chrome.browserAction.onClicked.addListener(function(tab) {
  chrome.tabs.executeScript(
      null, {file : "app.js"});                                                                                                                                                                         
});
Run Code Online (Sandbox Code Playgroud)

我在单击时将这样的代码注入到扩展程序中。但是我想在用户第二次单击扩展图标时删除这个注入的代码。这怎么可能。代码注入一个 id 为“pluginHolder”的 html div。我可以使用基本的 js 代码手动删除它document.getElementById('pluginHolder').remove();

如何动态执行此过程?

提前致谢

dor*_*guy 1

我认为最简单的解决方案是这样的

if(document.getElementById('pluginHolder')) {
    document.getElementById('pluginHolder').remove()
} else {
   var pluginHolder = document.createElement('div');
   document.body.appendChild(pluginHolder);
}
Run Code Online (Sandbox Code Playgroud)

如果你想影响 js 代码而不是 DOM。你可以使用 玩eventListener,

 function logMouse() {
      console.log(e.x+':'+e.y);
}
// Initialize on first run to true else use old value NOT(!) ( last time injected script)

isEnable = isEnable ? !isEnable : !!isEnable;
if(isEnable) {
    window.addEventListener('mousemove', logMouse);
} else {
    window.removeEventListener('mousemove', logMouse);
} 
Run Code Online (Sandbox Code Playgroud)