将 HTML 添加到 Chrome 扩展中的 DOM 后,通过单击浏览器操作删除它?

Remove HTML via clicking Browser Action after adding it to DOM in Chrome Extension?

我想创建类似 Font Face Ninja 的内容,我在其中单击浏览器操作并加载 UI 并在再次单击后删除 UI。

我的最小复制如下-

manifest.json

{
  "manifest_version": 2,
  "name": "Sample",
  "version": "1.0.0",
  "description": "Sample Extension",
  "icons": {
    "16": "icon16.png",
    "32": "icon32.png",
    "48": "icon48.png",
    "128": "icon128.png"
  },
  "background": {
    "scripts": ["background.js"],
    "persistent": false
  },
  "browser_action": {},
  "permissions": ["activeTab", "https://*/*", "http://*/*"]
}

content.js

const body = document.getElementsByTagName('body')[0]

const div = document.createElement('div')
div.innerHTML = `<h1>Sample Extension</h1>`
body.appendChild(div)

background.js

chrome.browserAction.onClicked.addListener(function(tab) {
  chrome.tabs.executeScript(tab.id, {
    file: 'content.js',
  })
})

以上示例将 <h1>Sample Extension</h1> 附加到任何页面。这是我的 UI.

我想在再次单击浏览器操作时删除它。我该怎么做?

HTML 可以通过在 content.js 中执行 body.removeChild(div) 轻松删除。

但是,我希望它可以切换,这必须使用消息传递来完成,所以我发布了一个解决方案以使其可以切换,因此它在单击一次时将 HTML 添加到 DOM 并在单击时将其删除再次等等。

在这里找到解决方案 →

我还上传了包含 Browser ActionPage Action 的 repo(检查分支 page_action) 到 Github → https://github.com/deadcoder0904/insert-remove-ui-chrome-extension/