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

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

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

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

Q&A

解決済

3回答

956閲覧

JavaScriptでページ内のソース変更に関与している部分の抜き出し

tesopgmh

総合スコア146

JavaScript

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

0グッド

1クリップ

投稿2018/07/19 08:00

お世話になります

ページ内に以下のようなボタン要素があり

<button id="hoge" data-url="abc/def?unique=XXX"></button>

ページを表示したタイミングでXXXがYYYに書き換わってしまっていることが分かりました

<button id="hoge" data-url="abc/def?unique=YYY"></button>

JavaScriptの
どこの処理がXXXをYYYに書きかえているのか特定したいのですが

このページは多くのJavaScriptを読み込んでおりひとつづつ消して目的の情報を探すのは大変そうで(エラーが起きたりで特定ができない)
hogeやuniqueやreplaceやhtmlなどのキーワードでgrep検索しても一般的な名称や処理なので関係ない処理が沢山ヒットしてしまい目的の情報にたどりつけませんでした

ページを表示した時点で発火しているファンクション(または処理)一覧を抜き出すことは
なにかのデバッグツールを使えば出来ることなのでしょうか??

デバッグツールに詳しい方お教えいただければ幸いです

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

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

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

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

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

guest

回答3

0

Chrome開発者ツールが使えるかもしれません。
Elementsタブ上でそのボタン要素を右クリックし、「ブレーク」->「属性が変更されました」を選ぶと、属性の値が書き換わったタイミングで処理が停止します。
以下のページのDOM Breakpointsグループの項目が参考になります。
https://www.buildinsider.net/web/chromedevtools/01

ただし、もしJSがReactなどのフレームワークによって書かれている場合、コード上でどこを直せばいいかはこれだけでは特定しにくいので、より良い方法があるかもしれません。

投稿2018/07/19 09:15

編集2018/07/19 09:16
Udomomo

総合スコア1524

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

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

tesopgmh

2018/07/27 07:06

ありがとうございます 開発者ツールでも目的の情報を得ることが出来ました
guest

0

ベストアンサー

ちょっとコードを書く必要がありますが、とりあえずは希望することはできるかと

js

1const elmHoge = document.querySelector('#hoge'); 2const observer = new MutationObserver(records => { 3 records.forEach(record => { 4 if(record.attributeName === 'data-url') { 5 debugger; 6 } 7 }) 8}); 9observer.observe(elmHoge, { attributes: true });

このようなコードを追加します。
MutationObserserを使って属性の変更を。
devToolsを起動してリロードすれば、debuggerステートメントで止まると思いますので、止まったら、右にあるcall Stackを見ればどこで書き換えられているのかわかるかと思います。

投稿2018/07/19 09:44

turbgraphics200

総合スコア4267

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

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

tesopgmh

2018/07/27 07:06

コードまで書いて頂きありがとうございます! 目的の情報を得ることが出来ました
guest

0

一応chromeの開発者ツールのperformanceタブで「●」を押してからページリロードして「stop」ボタンを押すまでに行われたすべての処理を追うことはできますが、
大量にjavascriptが読み込まれているということなのでどちらにしても探すのは困難だと思います。

投稿2018/07/19 09:17

keisukeh

総合スコア657

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

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

tesopgmh

2018/07/27 07:06

こういった時大変ですよね。。。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問