代码之家  ›  专栏  ›  技术社区  ›  Or Yaacov

chrome扩展:url更新时调用后台

  •  0
  • Or Yaacov  · 技术社区  · 7 年前

    我正在尝试为某些网站创建自动登录扩展。

    目标是创建一个后台脚本,每次活动选项卡url更改时都接收更新。

    经过多次尝试,我仍然无法成功捕获该事件,因此无法调用我的代码。

    我的 manifest.json文件:

    {
      "manifest_version": 2,
      "name": "OpenU AutoLogin",
      "description": "",
      "version": "1.0",
      "background": {
        "scripts": [
            "background.js"
        ]
    },
      "browser_action": {
       "default_icon": "OUAL48.png"
      },
      "content_scripts": [
        {
          "matches": ["http://*/*", "https://*/*"],
          "js":["OUAL.js"]
        }
      ],
      "permissions": [
        "tabs",
        "activeTab",
        "http://*/*", "https://*/*", "<all_url>", "background"
      ]
    }
    

    我的 背景.js: (sendScriptintoActiveTab函数工作正常)

        chrome.tabs.onActivated.addListener(function(tabId, changeInfo, tab) {
        SendScriptIntoActiveTab({code:"console.log(changeInfo);"});
     });
    
     function SendScriptIntoActiveTab(code){
        chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {
            chrome.tabs.executeScript(tabs[0].id,code, function(response) {
             });
           });
      }
    

    但可悲的是,当我从后台跑开的时候什么也没发生。 有人知道为什么吗?

    0 回复  |  直到 7 年前
        1
  •  1
  •   herodrigues    7 年前

    chrome.tabs.onActivated 签名错误。另外,你需要使用 chrome.tabs.onUpdated 收听选项卡URL更改。

    从文档中:

    激活的

    当窗口中的活动选项卡更改时激发。注意选项卡的url 可能在触发此事件时未设置,但您可以收听 更新的事件,以便在设置url时得到通知。

    要检查活动选项卡URL是否已更改,请执行以下操作:

    chrome.tabs.onActivated.addListener(function (activeInfo) {
      chrome.tabs.onUpdated.addListener(function (tabId, changeInfo, tab) {
        if (activeInfo.tabId === tabId && changeInfo.url) {
           console.log(`URL has changed to ${changeInfo.url}`)
        }
      })
    })