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>
問題は次の行にあります。
tab = tab.id;
次のようになります。
var tabId = tab.id;
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
});
これは私のために働いたものです:
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);
});
ES6の少しの助けを借りて、より良いコードを簡単に書くことができます:)
chrome.tabs.query({
active: true,
currentWindow: true
}, ([currentTab]) => {
console.log(currentTab.id);
});
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);
});