-2

重複の可能性: JavaScript を実行
できるサーバー側ブラウザ
PHP で JavaScript を実行

できれば PHP スクリプトを使用して、JavaScript コードを含む HTML を解析するにはどうすればよいですか。

例として:

<a href="javascript:link(10, true);">link</a>

JavaScript 関数が返す適切な値に置き換える必要があります。

<a href="http://www.example.com">link</a>

より複雑な例は、大量の JavaScript コードが散らばっている、保存された Facebook の HTML ページです。

要約: html+javascript を含むページの DOM を返す

4

3 に答える 3

1

このリンクに ID を与えるだけです。このソリューションはjavascript、jQueryではありません。

そのため、リンクに ID またはクラスを指定します。

$('.link').each(function() {
    var functionName = 'link';
    var start = $(this).attr('href');
    remove = start.replace('javascript:', ''), 
        get = remove.replace(new RegExp('^'+functionName+'\(((.+\,?)+)\)\;?', 'g'), function(a, b, c) {
        return c.replace(/[()']/g,'')
    }), args = get.split(",");

    //read settings
    var firstArgument = args[0];
    $(this).attr('href', firstArgument)
});​

これは単なる例であることに注意してください。

使用法:

​&lt;a class="link" href="javascript:link('http://facebook.com')"​&gt;Hi</a>​​​​​​​​​​​​​​​​​​

これにより、実際のリンクはhttp://facebook.comになります。

ただし、この方法で新しい引数を追加するのは難しく、あまり専門的ではありません。しかし、これはあなたが望むことをするはずです.私はあなたのリンク関数が実際に何をしていないのかわからなかったので、ブール値で引数を追加しませんでした. もちろん、これははるかに複雑になる可能性があり、これを実行できる関数を作成することもできますが、簡単に説明するためにこれを書きました。

を確認してください。

于 2012-07-29T17:35:08.040 に答える
0

DomDocument は、JS を含む PHP で HTML を解析するために使用できます: http://php.net/manual/en/class.domdocument.php

HTML 文字をエスケープせずに、cURL または wget (または使用するもの) の出力をエコーするだけで、HTML を使用して JS を「レンダリング」できます。外部JSの場合、タグをクロールしDomDocument scriptて適切なURLを取得し、サーバーから直接使用しない限りアクセス可能な位置にロードするクローラーを構築する必要がありますが、彼らはあまり満足していないと思います.そのことについて。

編集:いくつかのコメントの後の私の新しい答えは:いいえ

于 2012-07-29T17:18:49.430 に答える
0

できません。クリックすると、javascript:URI は単に関数を呼び出し、必要なことを実行させます (これには、どこかへの移動が含まれる場合があります)。戻り値を期待したり使用したりしません。多くのユースケースでは、関数によってナビゲーションがまったく発生しない場合があります。

于 2012-07-29T17:09:46.370 に答える