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

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

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

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

Chrome extension

Chrome拡張機能

Q&A

解決済

1回答

3170閲覧

【chrome拡張機能】コンソールを表示させたい

退会済みユーザー

退会済みユーザー

総合スコア0

JavaScript

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

Chrome extension

Chrome拡張機能

0グッド

0クリップ

投稿2022/07/25 07:54

実現したいこと

chrome extension v3にて
background.jscontent.js にコンソールを表示させたい

発生している問題・エラーメッセージ

background.js:1 Uncaught (in promise) Error: Could not establish connection. Receiving end does not exist.

該当のソースコード

background.js

1chrome.tabs.query({active: true, lastFocusedWindow: true, currentWindow: true}, 2 function(tab) { 3 chrome.tabs.sendMessage(tab[0].id, {greeting: "hello"}) 4 } 5);

content.js

1chrome.runtime.onMessage.addListener(function(request, sender, sendResponse){ 2 console.log(request.greeting) 3})

manifest.json

1{ 2 "name": "テスト用", 3 "version": "1.0", 4 "manifest_version": 3, 5 "background": { 6 "service_worker": "background.js" 7 }, 8 "permissions": [ 9 "storage", 10 "activeTab", 11 "scripting", 12 "background", 13 "tabs" 14 ], 15 "content_scripts": [{ 16 "matches": ["<all_urls>"], 17 "js": ["content.js"] 18 }] 19}

試したこと

エラー文を検索し、以下のことを試してみましたが変化ありませんでした。

・chrome.runtime.onMessage.addListener()のfunctionの中の一番最後にreturn trueを記述
・更新ボタンを押す
・他の拡張機能が影響していないか、他の機能を全てOFF

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

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

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

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

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

guest

回答1

0

ベストアンサー

まずchrome.tabs.queryの引数は1つでは?
引数が2つの場合ってありましたっけ?

いずれにしても、background.jsでいきなりその行が実行されても、その時点でメッセージを受け取る相手がいないということだと思いますし、その行の処理は一度実行されるだけで、それっきりですよね。

まずは拡張機能のクリックに反応してメッセージを送ることを試してみては。

まずmanifest.json

"action": {}

を追加します。

そしてbackground.jsでは

chrome.action.onClicked.addListener(function (tab) { chrome.tabs.sendMessage(tab.id, {greeting: "hello"}); });

を実行してみてください。

<all_urls>にマッチするURLのタブを開いた状態で拡張機能をクリックしたら、そのタブのコンソールにhelloが表示されると思います。

投稿2022/07/25 12:25

itagagaki

総合スコア8402

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

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

退会済みユーザー

退会済みユーザー

2022/07/25 14:58

解決できました。ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問