1

重複の可能性:
<script> タグの 'src' として指定されたファイルの内容を取得するにはどうすればよいですか?

これは奇妙な質問のように思えるかもしれませんが、私の頭の中にありました。1 つまたは複数の JavaScript ファイルを参照する HTML ファイルがあるとします。これらのファイルはローカルですが、外部の可能性があります。何らかの理由で (私自身の好奇心)、これらのファイルのいずれかの内容を文字列として出力し、コンソールまたはalert内容に書き込みたいと考えています。jsFile.js という名前の次の JS ファイルがあるとします。

// JavaScript Document
var testString = "I am just an output... or am I",
    testNumber = 1,
    testArray = [],
    testObject = {};

// random functionality, etc... etc...
if(testNumber > 100){
    // do something...
}

HTMLページを開くときに、これを次のように出力したい:

アラート画像

ただし、これを行う方法がわかりません。dom でタグを見つけて、SCRIPTその内容を出力するメソッドを使用できますか (以下を参照)、または (何らかの方法で) ファイルを読み取ってから、収集するコードの各行をループする必要がありますか?それを変数に入れてから、またはのいずれかで出力しalertますconsole.log

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Hello World</title>
</head>
<script type="text/javascript" src="jsFile.js"></script>
<script type="text/javascript">

// find the JS node...
window.onload = function(){

    var theFile = document.getElementsByTagName("script")[0];

    // none of these will work as the code within the jsFile.js is not a DOM object...
    console.log(theFile.text); // returns a zero length string
    console.log(theFile.innerHTML); // returns a zero length string
    console.log(theFile.textContent); // returns a zero length string   

}

</script>
<body>
I am just a HTML file... no more, no less...
</body>
</html>

上記は私の最初の試みですが、スクリプトの内容は DOM オブジェクトではないため、これらの方法はどれも機能しません。コード固有の回答は必要ありません。概念実証、アイデア、または正しい方向へのポイントだけです。意味が分からない場合は、そう言ってください。質問を言い換えます。

4

2 に答える 2

3

そのスクリプトのURLに対してAJAXリクエストを作成し、必要な場所にコンテンツを表示する必要があります(を取得するだけですresponseText)。これはサーバー側のリソースであり、返されるコンテンツはjavascriptになります:)

于 2012-08-27T13:03:14.270 に答える
0

エポックは本質的にこれにすでに答えていますが、私はこの挑戦に触発されました。同じドメイン (オリジン) にある場合、すべてのスクリプト リソースをコンソールにダンプする小さなスニペットを書きました。Chromeでテストしました。

var f = function (src) {
   var origin = location.origin || (location.protocol+'//'+location.hostname);
   if (src.substr(0, origin.length) != origin) {
      return;
   }
   x = new XMLHttpRequest();
   x.open("GET", src.substr(origin.length), true);
   x.onreadystatechange = function () {
      if (x.readyState == 4 && x.status == 200) {
         console.log(x.responseText)
      }
   };
   x.send();
};
var s = document.getElementsByTagName('script');
for (var i = 0; i < s.length; ++i) {
   f(s[i].src);
}
于 2012-08-27T13:16:31.613 に答える