🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Chrome

Google Chromeは携帯、テレビ、デスクトップなどの様々なプラットフォームで利用できるウェブブラウザです。Googleが開発したもので、Blink (レンダリングエンジン) とアプリケーションフレームワークを使用しています。

JavaScript

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

Q&A

1回答

1627閲覧

chromeの拡張機能のバックグラウンドスクリプトからjsを実行したい

me1t

総合スコア48

Chrome

Google Chromeは携帯、テレビ、デスクトップなどの様々なプラットフォームで利用できるウェブブラウザです。Googleが開発したもので、Blink (レンダリングエンジン) とアプリケーションフレームワークを使用しています。

JavaScript

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

0グッド

1クリップ

投稿2022/02/20 00:21

編集2022/02/20 10:41

やりたいこと

Chrome拡張を作る
├Chrome拡張でボタンを押す=>Chrome拡張のバックグラウンドに送る (<=これはできました)
├Chrome拡張のバックグラウンドスクリプトから今いるwebサイトの一番上でjs(topにしかない関数)を実行する
└今いるwebサイトでその関数が実行される

問題点

エラーコード:

js

1Error in event handler: ReferenceError: Game is not defined 2 at chrome-extension://<Chrome extension id>/background.js:3:2

※実行したウェブサイトから出てきました。

ソースコード:

js

1//background.js 2chrome.runtime.onMessage.addListener(function() { 3 const amo = window.prompt("amount:") 4 Game.Earn(Number(amo)) // 該当webサイトのtopにしかない関数 5});

js

1//main.js 2$("#test").on("click", () => { 3 chrome.tabs.query({ active: true, currentWindow: true }, function(tabs) { 4 chrome.tabs.sendMessage(tabs[0].id, "test"); 5 }); 6});

json

1//manifest.json 2{ 3 "name": "SAMPLE", 4 "manifest_version": 2, 5 "version": "1.0", 6 "browser_action": { 7 "default_title": "SAMPLE", 8 "default_popup": "main.html" 9 }, 10"background":{ 11 "scripts": ["jq360min.js", "background.js"] 12} 13}

main.html

1<!DOCTYPE html> 2<html lang="en"> 3 <head> 4 <meta charset="UTF-8" /> 5 <meta name="viewport" content="width=device-width, initial-scale=1.0" /> 6 <meta http-equiv="X-UA-Compatible" content="ie=edge" /> 7 <script src="jq360min.js"></script> 8 <style> 9 body { 10 width: 100px; 11 } 12 </style> 13 </head> 14 <body> 15 <button id="teat">send!</button> 16 <script src="script.js"></script> 17 </body> 18</html>

順番がばらばらになって申し訳ありません_ _

補足

Chrome OS 98.0

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

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

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

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

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

itagagaki

2022/02/20 00:58

> Game.Earn(Number(amo)) // 該当webサイトのtopにしかない関数 そのコードが見当たらないですが、topとは何のことですか?
me1t

2022/02/20 10:37

https://imgur.com/qgj4ucn インスペクターツールのコンソールの中の プルダウンメニューのtopです。
itagagaki

2022/02/20 10:57

ん-、で、そのコードはどこからブラウザに取り込まれるのですか? つまり、どのファイルのどこにあるのですか?
guest

回答1

0

今いるwebサイト

「アクティブタブ」のことですか?
「コンテンツスクリプトを実行しているタブ」のことですか?

今いるwebサイトの一番上でjs(topにしかない関数)を実行する

「ページスクリプト側で定義されている関数を実行する」という事ですか?
Game.Earn()は、ページスクリプト側に存在しますか?(コードが見つけられません)

Chrome拡張でボタンを押す=>Chrome拡張のバックグラウンドに送る (<=これはできました)

できていないと考えます。
manifest.jsonを読む限り、コンテンツスクリプトしか存在しません。
次のような、backgroundの項目がありません。

json

1 "background": { 2 "scripts": ["background.js"] 3 },

また、バックグラウンドスクリプトでどのような処理を行いたのでしょうか?

js

1 const amo = window.prompt("amount:") 2 Game.Earn(Number(amo)) // 該当webサイトのtopにしかない関数

だけであれば、コンテンツスクリプト(または、ページスクリプト)で直接実行してはいけないのでしょうか?


質問者様の認識と現状が隔離しているように思います。一旦、現状を整理し直したほうが良いと思われます。まず、Chrome拡張機能関連の各種用語を調べることをおすすめします。以上です。

投稿2022/02/20 04:57

k08045kk

総合スコア384

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

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

me1t

2022/02/20 10:48

> 「アクティブタブ」のことですか? 「コンテンツスクリプトを実行しているタブ」のことですか? => おそらく「アクティブタブ」です。 > 「ページスクリプト側で定義されている関数を実行する」という事ですか? `Game.Earn()`は、ページスクリプト側に存在しますか?(コードが見つけられません) =>`Game.Earn()`はアクティブ内のjsにて定義されています。 > できていないと考えます。 manifest.jsonを読む限り、コンテンツスクリプトしか存在しません。 (後略) => コンテンツスクリプトで半強制的に動かしていました。   書き直させていただいたので、参照お願いします。 > 質問者様の認識と現状が隔離しているように思います。一旦、現状を整理し直したほうが良いと思われます。まず、Chrome拡張機能関連の各種用語を調べることをおすすめします。以上です。 => ありがとうございます。一度整理してみます。   用語が一覧で載っている/ある程度まとまっているようなサイトが有れば教えてほしいです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問