【问题标题】:Display SignalR message with embedded HTML显示带有嵌入 HTML 的 SignalR 消息
【发布时间】:2016-10-20 21:12:49
【问题描述】:

我已经开始使用 SignalR,当然是从最初的聊天中心开始的,我想每个人都会在某个时候这样做。我想修改它,以便如果用户在他们的消息中输入 HTML,当它显示时,它会显示呈现的 HTML,而不是其中包含 HTML 标记的字符串。

这是我的 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 有“this is bold”,但不是将其呈现为 HTML,而是将其显示为字符串。我怎样才能让它呈现为 HTML?

我尝试将 作为 >但这没有用。我也尝试了 %3C 和 %3E,但它们也没有用。

【问题讨论】:

    标签: javascript c# html signalr


    【解决方案1】:

    调用.text 会更改对象的文本并故意阻止解析html 或脚本。

    你可以通过.html改变值来解析它

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

    【讨论】:

    • 这不起作用,它现在显示为 [object Object]
    • 好的,我想通了,使用您对 .html(message) 的建议,我现在需要以 encodeMesg[0].innerHTML 的形式访问该值,这可以满足我的要求。谢谢。
    • @Wizaerd:请随意将其标记为答案,以便将来可能帮助其他人。
    【解决方案2】:

    使用这个:

    var encodedMsg = $('').text(message).html();

    【讨论】:

    • 为什么会这样?为了以后的读者,请添加解释
    猜你喜欢
    • 2020-09-07
    • 1970-01-01
    • 2022-10-01
    • 1970-01-01
    • 2020-03-18
    • 1970-01-01
    • 1970-01-01
    • 2014-12-26
    • 1970-01-01
    相关资源
    最近更新 更多