WebChat如何设置发送者/接收者的CSS颜色

时间:2019-01-29 03:41:41

标签: javascript jquery css signalr

我正在努力实现网络聊天,并且提出了一个希望可以轻松解决的问题。

如何更改发送器/接收器的颜色以区分它们? 我试图将颜色保存到数据库中,但问题是如何识别我是发送者,接收者的颜色需要不同。

这是我实现聊天的方式:

Chat.js

connection.on("SessionNotification", function (user, message) {
    var msg = message.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
    var p = document.createElement("span");
    var q = document.createElement("li");
    p.setAttribute("class", "Sender");
    q.setAttribute("class", "Message");
    p.textContent = user + " - " + moment(datetime).format("DD-MM-YYYY HH:mm:ss");
    q.textContent = msg;
    document.getElementById("MessageList").appendChild(p);
    document.getElementById("MessageList").appendChild(q);
});

HTML

<script>
    $(document).ready(function () {
        $('#MessageList').stop().animate({
            scrollTop: $('#MessageList')[0].scrollHeight
        }, 2000);
        var SessionId = document.getElementById("Id").value;
        console.log(SessionId);
        var form_data = {
            "SessionId": SessionId
        };
        $.ajax({
            url: "@Url.Action("GetHistory", @ViewContext.RouteData.Values["controller"].ToString())",
            method: "POST",
            data: JSON.stringify(form_data),
            contentType: "application/json",
            success: function (result) {
                console.log(result);
                var output = JSON.parse(result);
                for (var i = 0; i < output.length; i++) {
                    var p = document.createElement("span");
                    var q = document.createElement("li");
                    p.setAttribute("class", "Sender");
                    q.setAttribute("class", "Message");
                    p.textContent = output[i].Name + " - " + moment(output[i].CreatedOn).format("DD-MM-YYYY HH:mm:ss");
                    q.textContent = output[i].Message;
                    document.getElementById("MessageList").appendChild(p);
                    document.getElementById("MessageList").appendChild(q);
                }

            },
            error: function (error) {
                console.log(error);
            }
        });
        return false;
    });
</script>
<div class="col-sm-12">
    <h2>Session</h2>
    <hr />
</div>
<div class="col-sm-12">
    <div class="row">
        <div class="col-sm-12">
            <div class="form-group">
                <div id="MessageListContainer">
                    <ul id="MessageList">
                    </ul>
                </div>
            </div>
        </div>
    </div>
    <div class="row">
        <div class="col-sm-12">
            <div class="form-group">
                @Html.HiddenFor(m => m.Id)
                @Html.HiddenFor(m => m.CurrentUser)
                <input class="form-control col-sm-12" id="Message" type="text" />
            </div>
        </div>
    </div>
    <div class="row">
        <div class="col-sm-12">
            <div class="form-group">
                <div class="clearfix">
                    <div class="pull-right">
                        <input id="Send" type="button" value="Send" class="btn btn-primary" />
                    </div>
                </div>
            </div>
        </div>
    </div>
    <div class="col-sm-12">
        <hr />
    </div>
</div>
<script src="~/aspnet/signalr/dist/browser/signalr.js"></script>
<script src="~/js/chat.js"></script>

1 个答案:

答案 0 :(得分:0)

作为JSON回来的AJAX调用似乎有一些字段,例如NameCreatedOn。您可以为SessionId添加一个附加的现场服务器端,无论如何将其注入到HTML中。然后,您可以进行比较以查看邮件的会话是否与您的会话匹配。如果是这样,那就是您而不是接收者。所以你可能会有类似的东西:

JS

// You set this earlier on
var SessionId = document.getElementById("Id").value;

// ........ OTHER CODE IN BETWEEN

for (var i = 0; i < output.length; i++) {
    var p = document.createElement("span");
    var q = document.createElement("li");

    // If session ID matches current session (i.e. you) then add different class
    if (output[i].SessionId === SessionId) {
        // It is you
        p.setAttribute("class", "Sender");
    } else {
        // It is other person
        p.setAttribute("class", "Receiver");
    }

    q.setAttribute("class", "Message");
    p.textContent = output[i].Name + " - " + moment(output[i].CreatedOn).format("DD-MM-YYYY HH:mm:ss");
    q.textContent = output[i].Message;
    document.getElementById("MessageList").appendChild(p);
    document.getElementById("MessageList").appendChild(q);
}

CSS

.Sender {
    color: blue;
}
.Receiver {
    color: green;
}