我怎样才能得到当前标签页的网址为 chrome 扩展?

jgwigjjp  于 2022-12-06  发布在  Go
关注(0)|答案(9)|浏览(227)

我知道在SO上有很多类似的问题,但我似乎不能让它工作。
我正在尝试从我的Chrome扩展中获取当前标签页的URL。然而,警报(tab.url)返回“未定义”。我已经将“标签页”添加到了manifest.json中的权限中。有什么想法吗?

<html>
<head>
<script>

    chrome.tabs.getSelected(null, function(tab) {
        tab = tab.id;
        tabUrl = tab.url;

        alert(tab.url);
    });

</script>
</head>
pkbketx9

pkbketx91#

仅供参考的人从谷歌:
OP使用的方法已过时。要获取用户正在查看的选项卡并且仅在他们正在查看的窗口中使用此方法:

chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {

     // since only one tab should be active and in the current window at once
     // the return variable should only have one entry
     var activeTab = tabs[0];
     var activeTabId = activeTab.id; // or do whatever you need

  });
ds97pgxw

ds97pgxw2#

问题就出在这一行:

tab = tab.id;

它应该类似于:

var tabId = tab.id;
w8biq8rn

w8biq8rn3#

在manifest.json中:

"permissions": [
    "tabs"
]

在JavaScript中:

chrome.tabs.query({
    active: true,
    lastFocusedWindow: true
}, function(tabs) {
    // and use that tab to fill in out title and url
    var tab = tabs[0];
    console.log(tab.url);
    alert(tab.url);
});
bzzcjhmw

bzzcjhmw4#

这就是我的工作:

chrome.tabs.query({
    active: true,
    lastFocusedWindow: true
}, function(tabs) {
    // and use that tab to fill in out title and url
    var tab = tabs[0];
    console.log(tab.url);
    alert(tab.url);
});
pxy2qtax

pxy2qtax5#

在ES6的帮助下,您可以轻松地编写更好的代码:)

chrome.tabs.query({
  active: true,
  currentWindow: true
}, ([currentTab]) => {
  console.log(currentTab.id);
});
uklbhaso

uklbhaso6#

请记住将其添加到manifest.json文件中

"permissions": [
    "tabs"
]
zlwx9yxi

zlwx9yxi7#

最新版本说明一定是这样的

async function getCurrentTab() {
  let queryOptions = { active: true, lastFocusedWindow: true };
  let [tab] = await chrome.tabs.query(queryOptions);
  return tab;
}

您必须在manifest.json中添加此内容

"permissions: [
    "tabs"
]
0s7z1bwu

0s7z1bwu8#

只是如果有人像我一样使用Web Extension Polyfill,为跨浏览器支持。

// using async function
const [currentTab] = await browser.tabs.query({
  active: true,
  currentWindow: true,
});

console.log({ id: currentTab.id, url: currentTab.url });
6jjcrrmo

6jjcrrmo9#

对我来说,我缺少Kartik Kkartin答案中的“选项卡”权限
后台脚本中的其余代码

chrome?.tabs?.onUpdated?.addListener((tabId, changeInfo, tab) => {
  if (changeInfo.status == 'complete') {
    console.log('tabId', tabId, 'changeInfo', changeInfo, 'tab', tab)
  }
})

这将记录选项卡信息,包括加载选项卡时tab.url中的url

相关问题