Chrome扩展程序:URL更新时调用后台

时间:2019-02-15 16:51:23

标签: javascript google-chrome google-chrome-extension

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

目标是创建一个后台脚本,该脚本在活动选项卡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"
  ]
}

我的 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) {
         });
       });
  }

但是,令人遗憾的是,当我从后台运行时,什么也没有发生。 有人有任何想法吗?

1 个答案:

答案 0 :(得分:1)

chrome.tabs.onActivated签名错误。另外,您需要使用chrome.tabs.onUpdated来监听制表符URL的更改。

从文档中

  

onActivated

     

当窗口中的活动选项卡更改时触发。请注意,标签的网址   可能在此事件触发时未设置,但您可以听   onUpdated事件,以便在设置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}`)
    }
  })
})