Javascript 打开和关闭镀铬延长件

Javascript 打开和关闭镀铬延长件,javascript,google-chrome,iframe,google-chrome-extension,Javascript,Google Chrome,Iframe,Google Chrome Extension,这似乎是最简单的任务,但我很难做到。。。我希望通过单击扩展图标打开扩展,而不是每次打开新选项卡时。我还想在按下图标时将其完全关闭。 我在网站的DOM中插入了一个iframe,它不是一个标准的弹出窗口。现在,每当单击图标时,我都会隐藏它,但每当加载新页面/选项卡时,它仍然会插入iframe。我尝试删除iframe,但每次我重新插入它,重新抓取网站并添加到数组时都会触发content_脚本,这使得TTS在每次重新打开扩展时都会重复单词 舱单: { "manifest_version": 2,

这似乎是最简单的任务,但我很难做到。。。我希望通过单击扩展图标打开扩展,而不是每次打开新选项卡时。我还想在按下图标时将其完全关闭。 我在网站的DOM中插入了一个iframe,它不是一个标准的弹出窗口。现在,每当单击图标时,我都会隐藏它,但每当加载新页面/选项卡时,它仍然会插入iframe。我尝试删除iframe,但每次我重新插入它,重新抓取网站并添加到数组时都会触发content_脚本,这使得TTS在每次重新打开扩展时都会重复单词

舱单:

  {
  "manifest_version": 2,
  "name": "Caliban",
  "description": "Chrome extension that reads text aloud",
  "version": "1.0",
  "permissions": [
    "tabs",
    "storage",
    "<all_urls>",
    "tts"
  ],
  "content_scripts": [
    {
      "matches": [
        "<all_urls>"
      ],
      "js": [
        "js/translations.js",
        "js/enums.js",
        "js/element-wrapper.js",
        "js/content_script.js"
      ],
      "css": [
        "css/parent.css"
      ]
    }
  ],
  "background": {
    "scripts": [
      "js/translations.js",
      "js/enums.js",
      "js/element-wrapper.js",
      "js/background.js"
    ]
  },
  "browser_action": {
    "default_icon": "img/icon.png",
    "default_title": "Caliban"
  },
  "web_accessible_resources": [
    "css/*.css",
    "images/*.png",
    "images/*.svg",
    "popup.html"
  ]
}
此函数在content_script.js的开头调用。同样在content_脚本中,我使用下面的函数来隐藏/显示,但之前用于创建/删除iframe

function toggleIFrame() {
    if (isFrameOpen === true)
    {
        iframe.style.display = "none";
        isFrameOpen = false;
    }
    else
    {
        iframe.style.display = "initial";
        isFrameOpen = true;
    }
我要找的是:

  • 打开:用户控制,而不是新选项卡控制。创建并插入iframe,删除网站
  • 关闭:删除iframe、卸载脚本、释放变量
  • 样板文件中有这样的东西吗?或者我需要手动编写这些看似标准的需求吗


    如果需要的话,我很乐意提供更多的代码。

    不要通过manifest
    “content\u scripts”
    键注入内容脚本,而是通过后台页面中的手动注入来响应


    通过这种方式,您可以控制何时注入它们,并且还可以实现逻辑,在它们已经被注入时禁用它们(留给读者作为练习:)

    而不是通过manifest
    “content\u scripts”
    键注入内容脚本,通过后台页面中的
    chrome.tabs.executeScript
    手动注入它们,以响应
    chrome.browserAction.onClicked
    。通过这种方式,您可以控制何时注入它们,并且还可以实现逻辑来禁用它们(如果它们已经被注入)。似乎是合乎逻辑的,我会尝试一下,然后返回给您。这里和那里都有一些错误,主要是关于权限的,但这确实是我要寻找的。你可以回答,我会接受的。
    function toggleIFrame() {
        if (isFrameOpen === true)
        {
            iframe.style.display = "none";
            isFrameOpen = false;
        }
        else
        {
            iframe.style.display = "initial";
            isFrameOpen = true;
        }