4

私には不可解な状況があります(少なくとも私にとっては不可解です)。

外部 Web サイトによって作成された外部ファイル「file.js」があります。

http://external-website.com/file.js

内部には次のコードがあります。

var sText= "dynamic value here";
document.write(sText);

したがって、基本的に、この Web サイトは N 分ごとにこのファイルを再作成し、この js ファイルの値を Web サイトに組み込む手段を人々に提供します。

<script src="http://external-website.com/file.js"></script>

しかし

変数 sText のみが必要です。これはDOMを台無しにするため、このスクリプトを実行したくありませんdocument.write(sText)(正しく理解している場合)。理想的には、このファイルに 1 行あれば幸いですvar sText= "dynamic value here";

この JS を使用する方法はありますが、実行させないでくださいdocument.write

4

2 に答える 2

1

スクリプトを解析して AST にし、変数定義ノードから文字列を抽出できます。この jsfiddleを参照してください。

まず、次のように外部スクリプト ファイルを定義します。

<script type="text/x-ignore_me" src="http://external-website.com/file.js"></script>

このtext/x-ignore_meタイプは、ブラウザによって認識されません。したがって、ブラウザはそのスクリプトを無視します。これで、スクリプトのコンテンツにアクセスして、Uglify.jsパーサーで解析できるようになりました。

var code = $("script[type='text/x-ignore_me']").text();
var ast = UglifyJS.parse(code);
var sTextContent = ast.body[0].definitions[0].value.print_to_string();
alert( sTextContent );

sText変数の内容(例では「動的な値」)を見つけsTextContentます。

参考として、Uglify.js パーサーのドキュメントはこちら にあります

于 2013-05-02T09:58:41.187 に答える
0

が実行されると、document.writefireBug または他の同様のプログラムを使用して、生成された Div によってレンダリングされるクラスまたは ID を検出することができます。document.write

レンダリングされた div のそのクラスまたは ID をオーバーライドして、スタイル ファイルdisplay:none; またはdisplay:none !important;スタイル ファイル内に作成する必要があります。これでJSファイルに触れなくても目的は解決すると思います。

于 2013-05-02T09:26:16.120 に答える