javascript - chrome.tabs.getCurrent() 或 tabs.query()

标签 javascript google-chrome-extension

两种方法都产生相同的错误Uncaught TypeError: Cannot read property 'query' of undefined 我的内容脚本...我已经看过How to fetch URL of current Tab in my chrome extension using javascriptHow do you use chrome.tabs.getCurrent to get the page object in a Chrome extension?尽管我仍然不确定自己做错了什么。

list .json

{
  "name": "Extension Tester",
  "version": "0.0.1",
  "manifest_version": 2,
  "description": "Tester",
  "permissions": [
    "tabs"
  ],
  "content_scripts": [
    {
      "matches": ["https://www.google.com/"],
      "js": [
        "inject.js"
      ]
    }
  ]
}

注入(inject).js

chrome.tabs.query({ currentWindow: true, active: true }, function (tabs) {
  console.log(tabs[0].id);
});

chrome.tabs.getCurrent(function (tab) {
  console.log(tab.id);
});

最佳答案

不能在内容脚本中使用chrome.tabs,你需要使用chrome.runtime 要知道内容脚本的tab id,首先使用chrome.runtime.sendMessage发送消息,后台页面接收。

使用chrome.runtime.onMessage.addListener,回调函数为

function(any message, MessageSender sender, function sendResponse) {...};

因此,您将通过 sender.id 知道选项卡 ID

关于javascript - chrome.tabs.getCurrent() 或 tabs.query(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26415925/

相关文章:

javascript - 静态加载脚本并在加载时运行

javascript - react 错误 - "is missing in props validation"

javascript - 使用 "in"检查字符串是否在数组中

JavaScript:将更改参数传递给回调

javascript - 当单击弹出窗口中的名称在新选项卡中打开链接时?

javascript - Chrome 扩展,Jquery ajax 失败

javascript - 将编译后的sass写入文件的父目录

javascript - 无法让 chrome.runtime.onMessage 监听

google-chrome-extension - Chrome 扩展存储 onChanged() 未检测到更改(未触发)

JavaScript/Chrome 扩展