逆引きマニュアル: Google Chrome拡張機能: アクティブなタブを取得する

投稿日:

やりたいこと

Google Chrome拡張で、アクティブなタブを取得する方法です。

前提条件

概要

chrome.tabs.queryを使います。

手順

以下のようにすればOKです(TypeScript)。 reject()の動作は正しいか自信ないですが・・・

currentWindow: trueを付けないと、複数ウィンドウのときに別のウィンドウが使われます。

function getCurrentTab(): Promise<chrome.tabs.Tab> {
    return new Promise((resolve, reject) => {
        chrome.tabs.query({active: true, currentWindow: true}, ((tabs) => {
            if (tabs.length === 0) {
                reject();
                return;
            }

            const currentTab = tabs[0];
            resolve(currentTab);
        }));
    });
}

補足

chrome.tabsの先頭にあるように、アクティブなタブ自体はパーミッションなしで取得可能ですが、 タブのURLなどを取得するには tabs パーミッションが必要です。

The majority of the chrome.tabs API can be used without declaring any permission. However, the “tabs” permission is required in order to populate the url, title, and favIconUrl properties of Tab.

マニュアル