ApacheVelocityを持っています。jQueryコードがあります。のようなことをするとき、VMは気に入らないと思います$img.css("float","left")
。HTML / Javascriptのブロック内でVM解析を完全に無効にするにはどうすればよいですか?
ありがとう
Velocity 1.7- beta1 がリリースされ、ディレクティブが同梱#[[don't parse me!]]#
されているため、.vm ファイル内の一連のコードをエスケープする必要はありません。
魅力のように私のために働きます。
\ エスケープは信頼できません。行う:
context.put("D", "$");
その後
${D}画像
次の 1.7 では、新しい #[[ パーサーはこれを完全に無視する ]]# 構文があります。うまくいけば、1.7-beta1 がすぐに出てくるでしょう。
ユーザーガイドを見ると、速度で名前が付けられた変数がない限り、$img
速度の解析に問題はないはずです。それ以外の場合は、でエスケープできます\$img
。
XML の CDATA タグを使用する場合と同じように、実際にパーサーが文字列をスキップするようにする限り、どうすればそれができるかわかりません。
上記のような短い例では、それが正当な Velocity 参照でない場合、$img を実行するだけで、Velocity はそれを無視します。
参照を回避したくなるのですが、これは非常に風変わりです。$img が実際の参照である場合、\$img は $img を表示します。しかし、$img が Velocity リファレンスでない場合、\$img は \$img を表示します。
特に解析したくないテキストの長いブロックがある場合は、それを別のファイルに入れ、インクルード テキストを解析しない #include を使用することをお勧めします。
#include("file.vm")
これにより、解析せずに「file.vm」が出力に直接含まれます。(テキストを含めてそのテキストを解析する場合は、#parse を使用します)。
ドル記号を解析するための変数を割り当てることができます。例えば:
#set( $jQ = "$" )
これで、この変数を使用して、必要な場所にドル記号を配置できます。
<script type="text/javascript">
$jQ img.css();
</script>
$ jQ変数とimg.css()の間にスペースがあることを確認してください。(速度が残りを別の変数として解釈しようとしないように)。$ jQ varの直後に括弧が続く場合は、これを行う必要はありません。
これは問題ありません:
$jQ('#smithySword');
各 $ 記号の前にバックスラッシュを付けることで、Velocityのドル記号をエスケープできます...
\$img.css("float", "left");
$
in jquery は の省略形であるため、 anyを にjQuery
置き換えることができます$
jQuery