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

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

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

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

Chrome extension

Chrome拡張機能

Q&A

解決済

1回答

2844閲覧

content scriptsがmatchesで指定したページで実行されない

matonrin

総合スコア12

JavaScript

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

Chrome extension

Chrome拡張機能

0グッド

0クリップ

投稿2020/08/18 04:17

YouTubeの動画ページで実行したいcontent scriptsが、一発で実行されません。
最初に動画ページを開いたときには実行されず、ページをリロードして初めて実行されます。

「content scriptsはmanifestファイルのmatchesで指定したページで毎回実行される」という理解だったのですが、間違っているのでしょうか。
毎回実行させるにはどうすればよいか、教えて下さい。

以下にmanifestファイルの内容を記載します。

JSON

1{ 2 "name": "hoge", 3 "description": "ほげほげ", 4 "version": "0.1", 5 "manifest_version": 2, 6 "content_scripts": [{ 7 "matches": ["https://www.youtube.com/watch*"], 8 "js": ["content_scripts.js"], 9 "css": ["style.css"] 10 }], 11 "permissions": ["https://www.youtube.com/watch*"] 12}

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

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

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

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

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

guest

回答1

0

自己解決

リスナーを使ってタブの更新を監視し、遷移先のページのURLが動画ページのURLパターンと一致したときに初期化処理を実行することで解決しました。

参考にさせて頂いたサイト

JSON

1{ 2 "name": "hoge", 3 "description": "ほげほげ", 4 "version": "0.1", 5 "manifest_version": 2, 6 "content_scripts": [{ 7 "matches": ["https://www.youtube.com/*"], 8 "js": ["content_scripts.js"], 9 "css": ["style.css"] 10 }], 11 "permissions": ["https://www.youtube.com/watch*"] 12}

JavaScript

1// background 2chrome.tabs.onUpdated.addListener(function(tabId, info, tab) { 3 // 読み込み時(loading)と読み込み完了時(complete)の内、 4 // 読み込み完了時のみ実行する。 5 if (info.status==='complete') { 6 if (tab.url.indexOf('https://www.youtube.com/watch')!==-1){ 7 chrome.tabs.sendMessage(tabId, {command: 'update'}); 8 } 9 } 10});

JavaScript

1// content scripts 2chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) { 3 if (request.command=='update') { 4 // 初期化処理 5 } 6}); 7

投稿2020/08/20 10:35

matonrin

総合スコア12

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問