web-dev-qa-db-ja.com

chrome拡張機能の現在のタブURLを取得するにはどうすればよいですか?

SOには同様の質問がたくさんあることは知っていますが、うまく機能していないようです。

現在のタブのURLをChrome拡張機能から取得しようとしています。ただし、alert(tab.url)は「未定義」を返します。 manifest.json。アイデアはありますか?

<html>
<head>
<script>

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

        alert(tab.url);
    });

</script>
</head>
56
rybo

問題は次の行にあります。

tab = tab.id;

次のようになります。

var tabId = tab.id;
28
serg

Googleの人々の参考までに:

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

  });
112

これは私のために働いたものです:

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);
});
7
jayant singh

ES6の少しの助けを借りて、より良いコードを簡単に書くことができます:)

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

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);
});
4
Kartik Kkartik