0

次のコードがあります

    $(document).ready(function () {
        $(".page").on('click', function () {
            $("#ctl00_MainContent_dfComments").html(function (i, val) {
                return val.replace(/\]/g, '>');
            });
        });

        $(".page").on('click', function () {
            $("#ctl00_MainContent_dfComments").text(function (i, val) {
                return val.replace(/\[/g, "<");
            });
        });

    });

ドキュメント全体の文字を置き換えることで、JQueryは素晴らしく機能します。ただし、< ブラケットを挿入すると、div 全体が空白になります。[ は何にでも置き換えることができますが、 < を入れるとすぐにその div 内のすべてが消えます。何が起こっているのでしょうか?

はい、これは太字を作成することになっています(bbパーサーのようなものです)

4

4 に答える 4

2

2 番目の置換では、.text()代わりに を使用してい.html()ます。補足として、2 つのイベント ハンドラーを組み合わせることもできます。

$(document).ready(function () {
  $(".page").on('click', function () {
    $("#ctl00_MainContent_dfComments").html(function (i, val) {
      return val.replace(/\]/g, '>').replace(/\[/g, '<');
    });
  });
});​

ここで動作しています:http://jsfiddle.net/pbnDP/8/

ボタンを押すと文字が太字になります。

明らかなセキュリティ上の懸念については、メイン ポストのコメントで説明されています。これが実行されているコンテンツをユーザーが生成できるサイトに配置しないでください。

于 2012-07-23T22:03:59.757 に答える
1

おそらく有効な HTML に終わらず、HTML をレンダリングする DOM が無効な HTML を破棄しているようです。

あなたのスクリプトにはいくつかの問題があります.1つ目は、危険なhtmlを促進することです.コードの健全性やブラックリスト/ホワイトリストのチェックを行っていないようです.

もう 1 つの問題は、ASP.NET ID を手動で命名することです。変更される可能性があるため、これは問題です。代わりに .ClientID を使用してください。

于 2012-07-23T21:49:11.300 に答える
1
       $(".page").on('click', function () {
        $("#ctl00_MainContent_dfComments").html(function (i, val) {
            return val.replace(/\[/g, "<");
        });
    });

.html はテキストよりもうまく機能する可能性があり、クラス名またはクライアント ID を使用して、ジョンが彼の回答で提案したような要素を選択します。これは、ブラウザーが ID を何に変更するかを推測するのには適していません。

于 2012-07-23T21:49:23.567 に答える
0

DOM をもう一度確認してください。ブラウザが< >html タグまたは html が無効であることを検出しているようです。

作業バージョン: http://jsfiddle.net/pbnDP/

Rubyを含むいくつかのプログラミングの世界ではhtml_safe、これと一緒に使用したいかもしれないと呼ばれるものがあることを私は知っています.

それが役に立てば幸い。

于 2012-07-23T21:52:19.160 に答える