Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/403.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在带有扩展图标的chrome扩展中切换(打开/关闭)内容脚本?_Javascript_Jquery_Google Chrome_Google Chrome Extension - Fatal编程技术网

Javascript 如何在带有扩展图标的chrome扩展中切换(打开/关闭)内容脚本?

Javascript 如何在带有扩展图标的chrome扩展中切换(打开/关闭)内容脚本?,javascript,jquery,google-chrome,google-chrome-extension,Javascript,Jquery,Google Chrome,Google Chrome Extension,我的chrome扩展由background.js和content.js组成,我从background.js启动。我有两个图标显示扩展是打开还是关闭,为此,我在background.js中基于以下内容使用了以下脚本: 图标切换工作正常,但脚本执行不正常。即使图标显示扩展已关闭,内容脚本也可以工作。 我在content.js中的代码如下: $(document).ready(function(){ var url = document.location.href; var pageM

我的chrome扩展由
background.js
content.js
组成,我从
background.js
启动。我有两个图标显示扩展是打开还是关闭,为此,我在
background.js
中基于以下内容使用了以下脚本:

图标切换工作正常,但脚本执行不正常。即使图标显示扩展已关闭,内容脚本也可以工作。 我在
content.js
中的代码如下:

$(document).ready(function(){
    var url = document.location.href;
    var pageModel = {
        url: url
    }; 
    config.allPages.push(pageModel);

    chrome.storage.local.set({'config': config}, function () {
        console.log('savedPageModelNew: ', config);
    });   
});
如何不仅切换图标,还切换脚本执行?坦率地说,我在
content.js
中的脚本相当大,我不能把它全部放在这里。我需要的是内容脚本,它在扩展打开时工作,在扩展关闭时“暂停”。也许有人有答案

我真的希望如此。提前多谢

另外,这也是我的manifest.json:

{
  "manifest_version": 2,

  "name": "ChromeExt",
  "version": "1.0",

  "permissions": [
      "activeTab",
      "tabs",
      "<all_urls>",
      "contextMenus",
      "storage",
      "https://*/*", "http://*/*"
  ],

  "browser_action": {
      "default_title": "Inactive.",
      "default_icon": "off.png"
  },

  "background": {
      "scripts": ["background.js"]
  },
  "content_scripts": [
      {
        "matches": ["http://*///*//", "https://*/*"],
        "css": ["mainStyles.css"]
      }
  ]
{
“清单版本”:2,
“名称”:“ChromeExt”,
“版本”:“1.0”,
“权限”:[
“活动标签”,
“标签”,
"",
“上下文菜单”,
“存储”,
“https://*/*”,“http://*/*”
],
“浏览器操作”:{
“默认标题”:“不活动”,
“默认图标”:“off.png”
},
“背景”:{
“脚本”:[“background.js”]
},
“内容脚本”:[
{
“匹配项”:[“http://*//*/”,“https://*//*”],
“css”:[“mainStyles.css”]
}
]

}

我们不需要查看您的内容脚本。您是否可以发布manifest.json,因为您可能已经在其中定义了内容脚本?此外,您知道,只有在单击“禁用”时页面尚未加载时,此操作才会停止内容脚本的运行。如果您希望在单击图标时停止已插入的内容脚本,则需要从内容脚本向后台页面发送消息,并以启用状态回复邮件。@Eja,谢谢您的评论,我添加了我的清单。里面有错误吗?我希望我的扩展在第一次激活时启动,然后在停止并再次启动后继续工作(不是每次单击图标激活扩展时启动)。您的清单正常。要执行所需操作,您需要在后台页面和内容脚本之间发送消息,因为后台页面知道启用状态,而内容脚本需要知道它无法直接访问的信息。在脚本之间发送消息在这里有很好的文档记录,我相信有很多关于编写扩展的教程使用它,因为这是一个非常常见的操作:@judgeja,非常感谢!我会按照你的建议去做。
{
  "manifest_version": 2,

  "name": "ChromeExt",
  "version": "1.0",

  "permissions": [
      "activeTab",
      "tabs",
      "<all_urls>",
      "contextMenus",
      "storage",
      "https://*/*", "http://*/*"
  ],

  "browser_action": {
      "default_title": "Inactive.",
      "default_icon": "off.png"
  },

  "background": {
      "scripts": ["background.js"]
  },
  "content_scripts": [
      {
        "matches": ["http://*///*//", "https://*/*"],
        "css": ["mainStyles.css"]
      }
  ]