2016-10-20 10 views
0

私は、誰もが一度にやり取りする最初のチャットハブから始めて、もちろんSignalRを使い始めました。私はそれを変更して、ユーザが自分のメッセージにHTMLを入力すると、表示されたときにHTMLタグ付き文字列だけに対抗してレンダリングされたHTMLを表示するようにします。ここで 埋め込みHTMLを表示するSignalRメッセージ

は私のjavascriptです:

<script type="text/javascript"> 
$(function() { 
    var chat = $.connection.chatHub; 
    chat.client.broadcastMessage = function (name, message) { 
     var encodedName = $('<div />').text(name).html(); 
     var encodedMesg = $('<div />').text(message).html(); 

     if (message === "joined session") { 
      $('#discussion').append('<li><strong>' + encodedName + ' ' + encodedMesg + '</strong></li>'); 
     } else { 
      $('#discussion').append('<li><strong>' + encodedName + '</strong>:&nbsp;&nbsp' + encodedMesg + '</li>'); 
     } 
    }; 

    $('#message').focus(); 

    $.connection.hub.start().done(function() { 
     chat.server.send("@FullName", "joined session"); 

     $('#sendmessage').click(function() { 
      chat.server.send("@FullName", $('#message').val()); 
      $('#message').val("").focus(); 
     }); 
    }); 
}); 

encodedMesgは、代わりにHTMLとしてそれをレンダリングする、それだけとしてそれを示して "これは大胆</B > <B>がある" があります文字列。これをHTMLとしてレンダリングするにはどうすればよいですか?

<を&としてエンコードしようとしました。および>として定義される。しかしそれはうまくいきませんでした。私も%3Cと%3Eを試しましたが、どちらもうまくいきませんでした。

答えて

0

.textを呼び出すと、オブジェクトのテキストが変更され、意図的にHTMLやスクリプトが解析されなくなります。

あなたはそれが.html

var encodedMesg = $('<div />').html(message); 
+0

これはうまくいきません。[オブジェクトオブジェクト] – Wizaerd

+0

として表示されます。ちょうど.html(メッセージ)の提案を使用して、私は今、encodedMesg [0] .innerHTMLとして値にアクセスする必要がありますそれは私がしたいことをします。ありがとうございました。 – Wizaerd

+0

@Wizaerd:これを答えとして記入しておけば、将来他の人に役立つ可能性があります。 –

0

使用これで値を変更することで、それを解析するために得ることができます。

VAR encodedMsg = $( '')、テキスト(メッセージ)の.html();

+2

これはなぜ機能しますか?将来の読者のために説明を追加してください – litelite

関連する問題