时间:2013-05-27 11:22:45

标签: javascript jquery signalr

我使用signalR创建了一个聊天应用程序。一切都适合我。但是在发送消息时存在一个小问题。 当我发送脚本标记作为消息时,它在我的聊天窗口中显示为空白。

我将代码附加到聊天窗口的代码,如下所示

$('#' + ctrId).find('#divMessage').append('<div class="message"><span class="userName">' + fromUserName + '</span>: ' + message + '</div>');

邮件将以“<script>”之类的字符串的形式发送到服务器端,但在附加时不显示任何内容。

2 个答案:

答案 0 :(得分:0)

您的邮件正在被解析为HTML。您可以转义服务器上的HTML实体(取决于您的服务器端语言,但无论如何都是首选),或者您可以使用文本节点来设置消息的textContent,而不是HTML;

var markup = $(jQuery.parseHTML('<div class="message"><span class="userName"></span></div'));

markup.find('.userName').text(fromUserName);
markup.append(document.createTextNode(message));

$('#' + ctrId).find('#divMessage').append(markup);

...但只是要强调,你应该真的在服务器上对此进行编码。

答案 1 :(得分:-1)

首先看一下谷歌搜索结果会给你答案。

var url = "your script url";
var message = document.createElement('script');
message.type = 'text/javascript';
message.src = url;
$('#' + ctrId).find('#divMessage').append('<div class="message"><span class="userName">' + fromUserName + '</span>: ' + message + '</div>');

http://mg.to/2006/01/25/json-for-jquery

Can't append <script> element

Can I create script tag by jQuery?