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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Chrome扩展程序:在URL更新时调用后台相关的知识,希望对你有一定的参考价值。

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

目标是创建一个后台脚本,每次活动选项卡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.is :( 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) {
         });
       });
  }

但遗憾的是,当我从后台跑步时,什么也没发生。任何人有任何想法为什么?

答案

chrome.tabs.onActivated签名是错误的。此外,您需要使用chrome.tabs.onUpdated来收听标签网址更改。

来自文档:

onActivated

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

以上是关于Chrome扩展程序:在URL更新时调用后台的主要内容,如果未能解决你的问题,请参考以下文章

Chrome扩展程序后台脚本如何与网页服务工作者进行通信?

在 Chrome 中安装扩展程序

从后台调用应用程序时调用方法

如何在iphone中单击按钮时调用url

如何根据后台运行的功能对 chrome 扩展的用户界面进行更改

当应用程序在后台运行时调用 onMessage 方法