0

ツールチップで、レンダリングされた HTML とマークアップの表示を停止したいと考えています。つまり、リピーターでデータを表示すると、次のようにうまく機能することに気付きました。jQuery Tooltip プラグイン 1.3 を使用します。

Server.HtmlEncode(Eval("ActivityDescription") as string)

そして、タイトル属性についても同じことができると思いました

<td class="activityDescriptionTooltip" title="<%# Server.HtmlEncode(Eval("ActivityDescription") as string) %>">
<%# Utilities.TruncateAtWord(Server.HtmlEncode(Eval("ActivityDescription") as string),30) %>
</td>

プラグイン経由でこのように呼び出されるツールチップ

   $j('.activityDescriptionTooltip').tooltip();

したがって、私のActivityDescriptionが "<h2>Test</h2>"

ツールチップで見たい"<h2>Test</h2>"。私のタイトル属性は次のようにレンダリングされます

title="&amp;lt;h2&amp;gt;Test&amp;lt;/h2&amp;gt;"

ただし、ツールチップでは、H2 形式の「テスト」としてレンダリングされます。

これは可能ですか?

4

1 に答える 1

1

はい、可能であるだけでなく、「リピーター」と同じように機能するはずです。

使用した関数 ( Server.HTMLEncode ) はこれに最適です。

以下はうまくいくはずです

<td class="activityDescriptionTooltip" title="<%# Server.HtmlEncode("<h2>Test</h2>") %>">

コードの問題は、文字列を 2 回エンコードしていることです (したがって、ツールチップにはエンコードされた文字列が表示されます)。

これの代わりに:

<td class="activityDescriptionTooltip" title="<%# Server.HtmlEncode(Server.HtmlEncode(Eval("ActivityDescription") as string)) %>">

これを試して:

<td class="activityDescriptionTooltip" title="<%# Server.HtmlEncode(Eval("ActivityDescription") as string) %>">

編集

あなたはこれが機能しないと述べました。そうだと思います。

このフィドルをチェックしてください。ご覧のとおり、html は次のとおりです。

<div title="&lt;h2&gt;Test&lt;/h2&gt;">asdf</div>

右下 (結果) フレームの div にカーソルを合わせると、ツールチップが表示され<h2>Test</h2>ます。少なくとも IE10、FF、Chrome では。(私は他のブラウザを試したことはありませんが、この問題で別のブラウザが動作した場合、私は完全に唖然とするでしょう).


EDIT2

jQuery ツールチップ プラグインは非常に古くて時代遅れのプラグインであり、1 つの追加レベルのエンコーディングが必要です。

このフィドルをチェックしてください

<div title="&amp;lt;i&amp;gt;Test&amp;lt;/i&amp;gt;">asdf</div>

2回エンコードされ、問題なく表示されます。

一方、そのプラグインはお勧めしません。jQuery UI ツールチップの方が適しています。

于 2013-05-09T15:32:53.323 に答える