2

初めてpjaxを使用しているwordpressサイトがあります。#main コンテナーと、引き伸ばされた背景スライダーに使用している main コンテナーの外側にある div を更新できるようにしたいと考えています。

バックグラウンド スライダーは、html に加えて、スライダーの設定を割り当てるスクリプト タグを書き込みます。innerHTML (スクリプトを保持するために jquery の html() の代わりに選択したもの) を使用して、スライダーの html を #main コンテナーの外側の適切な場所に移動することができました。そのとき、script タグが pjax リクエストでまったく返されていないように見えることに気付きました。

スクリプト タグを保持するか、何らかの方法で呼び出しで取得するための回避策はありますか? スクリプト タグ情報を取得するには、pjax が読み込まれた後に別の ajax 呼び出しが必要ですか?

ありがとう!

4

1 に答える 1

1

これは良い質問で、私もしばらく頭を悩ませていました。

残念ながら、PJAX によってページが JavaScript を再解析または再コンパイルすることはありませんが、新しい DOM を歩き回り、新しいイベント ハンドラーを登録します。

つまり、PJAX を使用してロードするコンテンツに JavaScript 呼び出しがある場合、それらが呼び出す関数を元のドキュメントにロードする必要があります。

したがって、たとえば、onClick を使用して画像を読み込んで、ライトボックスに大きなバージョンをポップアップ表示することができますが、元のページを読み込むときにライトボックスの JavaScript 関数を読み込む場合に限られます。

非常に簡単な例:

元の HTML ページ:

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

PJAX でロードされたコンテンツ:

<img src="small-image.jpg" onClick="javascript:show_lightbox('big0image.jpg');" />

ただし、元のページにスクリプト要素がなく、PJAX で読み込もうとすると、機能しません。

于 2013-11-11T21:14:50.147 に答える