2016-10-20 6 views
0

Ich habe angefangen, mit SignalR herumzuspielen, natürlich beginnend mit dem anfänglichen Chat-Hub, von dem ich denke, dass jeder es irgendwann tut. Ich möchte es so ändern, dass, wenn der Benutzer HTML in ihre Nachricht eingibt, wenn es angezeigt wird, es gerenderten HTML als Gegensatz nur zu der Zeichenfolge mit HTML-Tags darin angezeigt wird.Anzeige SignalR Nachricht mit eingebettetem HTML

Hier ist mein 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(); 
     }); 
    }); 
}); 

Die encodedMesg hat "diese <b> fett </b > ist", sondern es als HTML-Darstellung, zeigt es nur als ein Zeichenfolge. Wie kann ich das als HTML rendern lassen?

Ich habe versucht, die < als & lt codieren; und> als & gt; aber das hat nicht funktioniert. Ich habe auch% 3C und% 3E versucht, aber sie haben auch nicht funktioniert.

Antwort

0

Der Aufruf .text ändert den Text eines Objekts und verhindert absichtlich, dass HTML oder Skripts analysiert werden.

Sie können es es zu analysieren, indem Sie den Wert mit .html

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

Das funktioniert nicht, es zeigt jetzt als [Objekt Objekt] – Wizaerd

+0

Ok, ich habe es herausgefunden, mit Ihrem Vorschlag von nur .html (Nachricht), muss ich jetzt auf den Wert als codedMesg [0] .innerHTML zugreifen , was macht, was ich will. Vielen Dank. – Wizaerd

+0

@Wizaerd: Fühlen Sie sich frei, dies als die Antwort zu markieren, so dass es potentiell anderen in der Zukunft helfen kann. –

0

Verwendung dieses:.

var encodedMsg = $ ('') Text (Nachricht) .html();

+2

Und warum funktioniert das? Bitte fügen Sie eine Erklärung für zukünftige Leser hinzu – litelite