質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

2518閲覧

chrome拡張機能で、タブの情報を動作無しで取得する

sharpnail

総合スコア16

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2019/06/21 15:40

chrome拡張機能で、webページが読み込まれた時にそのタブの情報を取得するにはどうすれば良いでしょうか。

調べた所chrome.tabs.getSelectedを用いる方法が出てきましたが、そのいずれも「拡張機能のアイコンを押してpopup.htmlを表示する」動作を経由して
そのpopup内にタブの情報を表示する感じでした。

しかし自分はその動作を経由せず、webページが読み込まれたら無条件でブラウザのコンソール内にタブの情報を表示するorバックグラウンドに情報を送る、ということをしたいです。

試しにメインのjsファイルに
window.onload=function(){
chrome.tabs.getSelected(null, function(tab) {
console.log(tab.title);
});
}
としてみましたが、getSelectedの対象がないと言われ、どうすれば良いかわかりません。(対象がないと言われてもどう作れば良いのか…)
どうすればタブの情報を素で取得できるでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

まずmanifest.jsonのpermissionsキーの配列に"tabs"を指定して権限を得ます。
次に全てのページで動作するContentScriptsを作り、ページが読み込まれるたびにruntime.sendMessageでmessageイベントを発行します。
最後に発行されたイベントをBackgroundスクリプトのruntime.onMessageで捕捉し、そのタイミングでtabs.getSelectedやtabs.queryを使用すれば現在選択中のtabオブジェクト(単なるJSON)を取得できます。

以前から同じような方法で、ContentScriptsのsendMessageに対して呼び出し元タブのtabオブジェクトを返送するBackgroundスクリプトを使っていますが割と便利です。

投稿2019/06/21 20:32

honeo

総合スコア78

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sharpnail

2019/06/22 03:33 編集

content scriptsのjsファイル内でchrome.tabsを使っていたのですが、これはbackgroundでないと使えないのですね。 仰る通り、backgroundにメッセージを送り、background.js内でchrome.tabs APIを使用することで、無事に読み込まれたページの情報を取得できました。 ご教示いただきありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問