2016-08-25 5 views
1

初心者の質問ですが、私のウェブサイトにロードされたすべてのJSファイルの完全な名前のパスを持つリストを取得する最良の方法は何ですか?ウェブページにロードされたすべてのJSファイルのリストを取得

私はページwww.mypage.comを持っています - このページにロードされたフルネームパスを持つすべてのJSファイルのリストを取得したいと思います。

+1

現在のページまたはすべてのページについては、現在のページ、開発ツールを開いて、ネットワークタブを見て、スクリプトをフィルタリングします。またはquerySelectorAllを呼び出し、コレクションをループします。サイト全体であれば、それはクモを書くことを意味します。 – epascarello

+0

現在のページ...私はそれをしましたが、すべてのデータを同時にコピーする簡単な方法はありませんでした。 –

答えて

1

あなたは、すべてのスクリプトは最初のタグを取得する必要::

var scripts = document.getElementsByTagName('script'); 

し、それをループ:

for(var i=0;i<scripts.length;i++){ 
scripts[i].src; 
} 
+2

ほとんど役に立たず、間違いなく不完全です。 XHRはどうですか? – Amit

+0

@Amit:よりよい解決策ですか? –

+0

@Jonasw - 質問がうまく定義されていないIMO、良い答えは存在しません。 – Amit

1

そのようなことは、ECMAScriptの6のサポート付きのモダンなブラウザで行います。ただし、一部のスクリプトでは、適切なタグを削除して、そのタグをそのリストから隠すことがあります。

var jsFilePaths = Array.prototype.slice 
    .apply(document.querySelectorAll('script')) 
    .filter(s => s.src) 
    .map(s => s.src); 

ラムダがオプションでない場合は、通常のforサイクルを使用してください。

XHRやJSONPのようなデータ読み込みメソッドを使用して読み込んだ後、evalまたはnew Functionまで実行したスクリプトも表示されません。あなたがレコードXHRsを傍受し、する必要があり、あなたはすべてのXHRsが行われ、集中場所を持っていない場合は

、あなたはおそらく、検索応答があるかどうかを確認するXMLHttpRequestをオーバーライドし、そのreadystatechangeイベントにいくつかのロジックを追加する必要があります。実行可能なJavaScriptについて詳しくは、How to easily listen for xhr requests with javascript?に関するこの質問を参照してください。

あなたは<script>がDOMに追加されているか、そのsrc属性を操作したとき、すべてのケースを傍受する必要がある場合は、より多くの情報のためan MDN articleを参照して、DOM MutationObserverを使用することができます。

さらに、document.writeを傍受して、さらにインラインスクリプトを追加するスクリプトがあるかどうかを確認する必要があります。さらに、<img/>のようなスクリプト以外の要素も、よく知られているXSSハック<img src="http://nonexistent.url/x.png" onerror="alert('xss!')" />のようにスクリプトを実行することがあります。

さらに、このようなXHRをインターセプトし、特にDOM突然変異イベントおよびDOM突然変異監視の使用がページのパフォーマンスに悪影響を及ぼし、時には顕著になることに注意することが重要です。

+0

Sooo、不可能、そうですか?それは、この答えはかなり意味がないと思いますか?ちょうどコメントを投稿してください。 – Amit

+0

@Amit。親愛なる、OPを助ける私の謙虚な努力を許してください。いいえ、それは不可能ではありそうもありません。むしろやりにくいです。私は私のポストに情報を追加しました。しかし、私の最善の知識では、StackOverflowの答えは、常に完全なコードソリューションではありません。 –

+0

それははるかに良い答えです。個人的に私はまだ強調する最も重要なことは、これを達成するための保証された方法がないという事実ですが、あなたは最も重要な部分をカバーしました。 – Amit

関連する問題