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

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

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

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

Chrome extension

Chrome拡張機能

Q&A

1回答

237閲覧

Chrome拡張機能から現在開いているページのdocumentを取得する方法

yukkuri_55

総合スコア265

JavaScript

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

Chrome extension

Chrome拡張機能

0グッド

1クリップ

投稿2024/12/11 06:57

編集2024/12/11 12:31

実現したいこと

Chrome拡張機能のJavaScriptから、Chromeで開いているWebページの
document変数を取得する。

発生している問題・分からないこと

Chrome拡張機能で、JavaScriptが動くことは確認できました。
例として、下のコードを実行すると
拡張機能のpopup.htmlのタイトルが取得できます。
しかし、popup.htmlではなく、現在Chromeで開いているページのタイトルを
取得したいのです。
chrome.tab とか、ググったらありましたが、よくわかりませんでした。
どうすれば、拡張機能から現在開いているページのタイトルを取得できるのでしょうか?

該当のソースコード

JavaScript

1const elmNote = document.getElementById("note"); 2const elmSave = document.getElementById("save"); 3 4elmSave.onclick = () => { 5 'use strict' 6 chrome.tabs.query({active: true, lastFocusedWindow: true},tabs => { 7 // 拡張機能のHTMLが読み込まれる 8 console.log(document.title); 9 }) 10} 11 12

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

拡張機能に設定したHTMLのタイトルは取得できるが、
現在Chromeで開いているWebページのタイトルは取得できない。

補足

特になし

質問後調べました

https://qiita.com/plumfield56/items/99f5cfc1bf5fd03e8040
ここを参考にしました。

JavaScript

1const elmNote = document.getElementById("note"); 2const elmSave = document.getElementById("save"); 3 4'use strict' 5 6{ 7 chrome.tabs.query({}, tabs => { 8 for(let i=0; i<tabs.length; i++){ 9 console.log(tabs[i].title); 10 } 11 }); 12}

調べた結果、上のようなソースコードになりました。
console.log でログにタイトルが出力されると思いましたが、
ログには undefined が表示されます。
tab にアクセスするために json に permission に tabs を追加しましたが、
それでもログには、undefined が表示されます。

どうすればいいタイトルが表示されるようになりますか?

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

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

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

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

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

guest

回答1

0

タイトルだけなら、tabs[0].title で取得できると思います。

それ以外のタブの document に関わる情報を得るには、content script を用意して通信する必要があります。

投稿2024/12/11 07:24

int32_t

総合スコア21775

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

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

yukkuri_55

2024/12/11 10:12

elmSave.onclick = () => { 'use strict' chrome.tabs.query({active: true, lastFocusedWindow: true},tabs => { // 拡張機能のHTMLが読み込まれる console.log(chrome.tabs.document.title); }) } を console.log( chrome.tabs.title); console.log( chrome.tabs[0].title ); console.log( tabs.title ); console.log( tabs[0].title ); console.log(chrome.tabs.document.title); など複数試しましたが、うまくいきませんでした。 タイトルだけではなく、document を取得して、getElementByName()関数などを 使用したいと考えています。 取得するのはアクティブなタブひとつだけでいいです。 どのようなコードになるのか、全体図を教えていただけませんでしょうか?
int32_t

2024/12/12 01:55

> 全体図を教えていただけませんでしょうか? けっこうな手間なのでお断りします。 ChatGPT や Gemini にお願いしたら書いてくれるかもしれません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.34%

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

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

質問する

関連した質問