0

PHP には、 stream_wrapper_registerという関数があります。これで、インクルードしようとしているすべての PHP ファイルのファイル コンテンツを取得できます。つまり、基本的に、解析される「コード」を制御できます。

JavaScriptにもこのようなものがあるのではないかと思っていましたか?だから私は私のファイルを含めるとします:

<script type="text/javascript" src="js/myfile.js"></script>

そのファイルの私のコードは、ストリーム ラッパーをセットアップします (これは JS でも利用できると仮定します)。ここで、含まれる他のすべての JavaScript ファイルのファイル コンテンツを取得できるようにしたいと考えています。

<script type="text/javascript" src="js/somefile.js"></script>
<script type="text/javascript" src="js/someotherfile.js"></script>

ただし、これはもちろん、ブラウザが実際にそれらのファイルを実行する前に発生する必要があります。

どういうわけかそれを傍受する方法はありますか?

4

2 に答える 2

2
$.ajax("/path/to/javascript.js").done(function(source) {
    eval(transmogrifySourceCode(source));
});

jQuery 構文を使用したのは、AJAX スタイルの get の方がはるかに簡単でありtransmogrifySourceCode、ソースをロードする前にソースを編集するための独自の関数を提供する必要があるためです。

でも、なぜあなたがそうしたいのだろうかと思います。入力ソースを完全に制御する必要があるため、サーバー上で不要なコードを削除してみませんか?

于 2012-05-29T19:29:36.627 に答える
0

いいえ、できません。セキュリティ上の理由から、すべてのスクリプトのコンテンツを取得することはできません。

Opera の場合、ローカル ユーザー スクリプトからリッスンできる特別なBeforeScriptイベントがあります。

<script>そのため、ページ内の (動的に追加された) 要素を検出し、それらがスクリプトを読み込んで実行するのを防ぐ(良い) 方法はありません。それでも、@DavidEllisが提案したように、同じオリジンポリシー(!)を尊重し、変更されたコンテンツを評価して、ajaxによってスクリプトファイルをロードできます。

それ以外の場合は、サーバー上ですべてのスクリプト インクルージョンをプロキシし、そこで変更する必要があります。

于 2012-05-29T19:47:18.080 に答える