Chrome devtools に機能を追加する拡張機能を作成しようとしています。
devtools のドキュメントによると、devtools のページがサポートする API は非常に限られているとのことです。サポートされていない API は、コンテンツ スクリプトと同様に、バックグラウンド ページからアクセスすることでアクセスできます。
関連するドキュメントのスニペットは次のとおりです。
tabId プロパティは、chrome.tabs.* API 呼び出しで使用できるタブ識別子を提供します。ただし、セキュリティ上の理由により、chrome.tabs.* API は開発者ツール拡張ページに公開されていないことに注意してください。タブ ID をバックグラウンド ページに渡し、そこから chrome.tabs.* API 関数を呼び出す必要があります。
ソース URL は次のとおりです: http://developer.chrome.com/extensions/devtools.inspectedWindow.html
ただし、それを実行しようとすると、コンソールに次のエラーが表示されます。
uncaught Error: "getBackgroundPage" can only be used in extension processes. See the content scripts documentation for more details.
devtools.js スクリプトのコードは次のとおりです。
chrome.extension.getBackgroundPage().getLocation();
私は何を間違っていますか?
編集
最初にシナリオを説明し、それをどのように実装しているかを示す必要があります。
私がやりたいことは、Web ページに関連する devtools パネルに追加のデータを表示することです。そのデータを取得するには、認証が必要なため、デバッグ中のページと同じセッションで HTTP 要求を送信する必要があります。
使用事例:
ユーザーが特定の URL を参照します。彼はサイトに対して認証されています。次に、devtools を呼び出します。devtools パネルが開き、ページに関連する追加データを含む新しいパネルが表示されます。
実装:
1) DevTools スクリプトは、検査対象のページの URL を見つけます。URL がサイトのベース ホスト名と一致する場合は、パネルが開きます。パネル作成のコールバックで、バックグラウンド ページにメッセージを送信し、同じサイトのデバッグ エンドポイントから JSON ペイロードをダウンロードするように要求し、それを devtools 拡張機能に送信して表示します。
問題:
1) バックグラウンド ページがリクエストを受け取り、URL をダウンロードします。ただし、ダウンロードはユーザーと同じセッションを使用していないため、ダウンロード リクエストは失敗します。
2) devtools ウィンドウから、検査したウィンドウの tabId を取得しました。この tabId をバックグラウンド ページに送信して、URL からいくつかのものを解析できるようにします。ただし、chrome.tabs.get(tabId) はタブを返しません。
要約すると、私はする必要があります
1) バックグラウンド ページを取得して、デバッグ中のユーザーのタブと同じセッションでデータをダウンロードします。2) 背景ページがユーザーのタブにアクセスできるようにする必要があります。