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

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

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

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

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

Chrome extension

Chrome拡張機能

Q&A

解決済

1回答

178閲覧

chrome拡張でajaxCompleteが動作しない。

k.hojo

総合スコア2

JavaScript

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

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

Chrome extension

Chrome拡張機能

0グッド

1クリップ

投稿2024/12/16 08:12

実現したいこと

Chrome拡張のcontent_scriptsで、以下のスクリプトを実行したい。

JavaScript

1$(document).ajaxComplete(function() { 2 console.log("ajaxComplete"); 3});

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

Chromeのディベロッパーツールでは動作するのに、Chrome拡張にすると上記のスクリプトが実行されない。

エラーメッセージ

error

1実行されないだけなので、エラーメッセージはない。

該当のソースコード

上記の通り。

試したこと・調べたこと

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

https://stackoverflow.com/questions/14266872/document-ajaxcomplete-doesnt-fire-inside-of-content-script
と同件かと思われる。

補足

特になし

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

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

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

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

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

yambejp

2024/12/16 08:32 編集

単純に$.ajaxやloadなどのajaxを発行していないのでは?
k.hojo

2024/12/16 23:50

コメントありがとうございます。 間違いなくajaxの通信は発生しているのに反応しません。 クロームのディベロッパーツールで対象のスクリプトを実行してから、 まったく同じ画面の操作をしたところ、ちゃんと発火しています。 chrome拡張にすると、それ以外が同じ条件でも発火しません。 調べていて思ったのですが、以下が関係しているような気がしてきました。 1.対象の画面はjqueryを読み込んで使っている。 2.chrome拡張を作成して、content_scriptsで呼び出している  「script.js」内に記述した「 $(document).ajaxComplete(function() { 」  の個所で、以下のエラーが発生。  「ReferenceError: $ is not defined」  どうも、jqueryが読み込めていない模様。  対象の画面で、jqueryを読んでいるので、それが使えると思っていたのに  使えていない? 3.manifest.jsonの、  content_scriptsで読み込んでいる「script.js」の前に、  「jquery.min.js」を実行するようにしたら、エラーは発生しなくなった。 →上記の経緯があったので、実質、対象の画面のjqueryと、  chrom拡張で実行したjqueryで、jqueryの2重読み込みという状況になって  いるのかもしれません。結果、ajaxCompleteにコールバックを設定した方  とは異なるjqueryが動作しているため、コールバックが実行されていないような  気がしています。ただ、これが当たっていたとしても、どう対処すればいいのか  が思いつきません。
yambejp

2024/12/17 00:08

>ajaxの通信は発生している いや、ajax通信ではなく$.ajaxやloadを発行したかを聞いているのですが?
guest

回答1

0

ベストアンサー

content script と、対象ページのJavaScript環境は別のものです。DOMは共有されますが、対象ページのJavaScriptで定義した変数や関数は content script からは利用できません。

対象ページのJavaScriptから実行したXHRやfetchのイベントを受け取りたいなら、content script で <script> をDOMに追加して対象ページのJavaScript 環境にコードを注入する必要があります。

投稿2024/12/17 00:02

int32_t

総合スコア21775

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

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

k.hojo

2024/12/17 01:02

回答ありがとうございます。 試したところ問題が解決しました! ベストアンサーに選ばせていただきました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.34%

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

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

質問する

関連した質問