我在我的网站上聊了一会儿。
我希望用户能够这样做:
当他输入:P
等特殊字符时,会显示一个图标
我用这段代码做到了这一点:
chat_icons=new Array();
$(".chat_icons img").each(function(index){
chat_icons[index]=$(this).attr("title");
});
$.each(chat_icons, function(index, value) {
var msg_array=new Array();
msg_array=message.split(value);
message="";
for(j=0;j<msg_array.length;j++){
message+=msg_array[j];
url=index+1;
img_msg="<img src=\"/apps/chat/icons/"+url+".png\" title=\""+value+"\" />";
message+=img_msg;
};
message=message.substr(0,message.length-img_msg.length);
});
此代码运行良好。 我要做的第二件事是当聊天用户输入YouTube网址时,会显示一个链接。 我试着这样做:
msg_array=new Array();
msg_array=message.split("http://www.youtube.com/watch");
message="";
for(j=0;j<msg_array.length;j++){
if(j / 2==0){
message+=msg_array[j];
}
else {
youtube_array=new Array();
youtube_array=msg_array[j].split(" ");
message+="<a href=\"http://www.youtube.com/watch"+youtube_array[0]+"\" target=\"_blank\">http://www.youtube.com/watch"+youtube_array[0]+"</a> ";
for(k=1;k<youtube_array.length;k++){
message+=youtube_array[k]+" ";
}
}
}
此代码给出了以下结果:
http:/ /www. youtube.com/ watch?v=some_id -->works
http:/ /www. youtube.com /watch?v=some_id chat text chat text
http://www.youtube.com/watch?v=some_id ---> works
http:/ /www. youtube.com/ watch?v=some_id&feature=something -->don't work
http:/ /www. youtube.com/ watch?v=some_id&feature=something anything else --> doesn't work
最后两个示例为我提供了此代码<a href="http:/ /www. youtube.com/watch?v=some_id">http:/ /www.youtube.com /watch?v=some_id</a>
所以我对特殊字符有疑问。 我该如何解决这个问题?
我想问的最后一件事是我不希望用户进行JavaScript / HTML注入。
我想要的唯一方法是我上面说的两个。示例:如果用户键入</body>
,则我无法看到它,因为我使用$(".message").html(...)
。
如果我使用.text()
我解决了最后一个问题,但我看不到图片和youtube链接。
我剪切youtube_url
因为系统认为我是垃圾邮件发送者。
jsfiddle代码:http://jsfiddle.net/Fb9kA/1/
YouTube网址的&
字符与data: "name="+$(".chat_username").val()+"&message="+$(".chat_text").val(),
我已将其修改为:data: "name="+escape($(".chat_username").val())+"&message="+escape($(".chat_text").val()),