4

春ベースのサイトにサイトメッシュを使用しています。問題は、すべてのページではなく、jquery を使用して特定の 1 つのページのみの onload イベントで実行する JavaScript があることです$(function() { ... })

本体の後に、デコレーターの下部に jquery.js を含めました。したがって、装飾されたページの本文にタグを含めようとすると、その後<script>jquery が読み込まれるため、スクリプトは実行されません! デコレーターのヘッダーに jquery.js を含めることができることはわかっているので、装飾されたページのカスタムスクリプトの前になりますが、ページの先頭に javascritp が含まれるため、そのソリューションはあまり好きではありません。

したがって、装飾されたページのカスタムが配置される場所に、sitemesh デコレーターにプレースホルダーのようなものを配置したいと思います (理解できるように、私は django の世界から来ました:p)。これは可能ですか?他に何か提案はありますか、それとも私の jquery.js をヘッダーに入れて、それで終わりにするべきですか?

4

1 に答える 1

8

私の質問に答えるために、いくつかの検索の後、次の解決策を見つけました。

デコレータページの最後に次を追加しました(jquery.jsを含めた後)

<decorator:getProperty property="page.local_script"></decorator:getProperty>

以下も追加しました

<content tag="local_script">
<スクリプト>
  $(関数() {
    alert("開始");
  });
</script>
</コンテンツ>

装飾された結果ページには、必要な場所に local_script タグの内容が正確に含まれており、すべて正常に機能しました :)

サイトメッシュのこの機能が適切に文書化されていない理由がわかりません。これを使用すると、(django のように) 優れたテンプレート動作を実行できます。

于 2013-10-01T13:18:10.890 に答える