Javascript 表情符号不';无法在(Saferi和Chrome浏览器)中使用多个表情符号

Javascript 表情符号不';无法在(Saferi和Chrome浏览器)中使用多个表情符号,javascript,jquery,google-chrome,safari,Javascript,Jquery,Google Chrome,Safari,我正在尝试使用jquery制作一个表情符号。但是我对多重表情符号有一个问题。我是从jsfiddle.net创建的 如果用户写了不同的多个表情符号,jquery代码可以正常工作,但是如果用户写了两个或更多的微笑,比如:):):),那么jquery代码只显示第一个表情符号,其他表情符号将不会显示。有人能帮我吗 JS jQuery.fn.emoticons=函数(图标\u文件夹){ /*图释是存储图释的文件夹*/ var icon_folder=icon_folder | |“表情符号”; //var

我正在尝试使用jquery制作一个表情符号。但是我对多重表情符号有一个问题。我是从jsfiddle.net创建的

如果用户写了不同的多个表情符号,jquery代码可以正常工作,但是如果用户写了两个或更多的微笑,比如:):):),那么jquery代码只显示第一个表情符号,其他表情符号将不会显示。有人能帮我吗

JS

jQuery.fn.emoticons=函数(图标\u文件夹){
/*图释是存储图释的文件夹*/
var icon_folder=icon_folder | |“表情符号”;
//var settings=jQuery.extend({emoticons:“emoticons”},选项);
/*钥匙是表情符号
*价值观是书写表情符号的方式
*
*对于每个表情符号,都应该是带有文件名的图像
*“face emoticon.png”
*例如,如果我们想添加一个奶牛表情符号
*我们在emotes中添加“cow”:数组((C)”
*还有一张名为“face cow.png”的图片,在emoticons文件夹下
*/
变量emotes={“smile”:数组(“:-)”、“:)”、“=]”、“=”、“=)”,
“sad”:数组(“:-(”,“=(”,“:[”,“:”),
“wink”:数组(“;-)”、“;)”、“;]”、“;]”、“*)”,
“grin”:数组(“:D”、“=D”、“XD”、“BD”、“8D”、“XD”),
“惊喜”:数组(“:O”、“=O”、“:-O”、“=-O”),
“恶魔”:数组(“(6)”),
“天使”:数组(“(A)”),
“哭泣”:数组(“:”(“,“:”-(”),
“普通”:数组(“:|”),
“微笑大”:数组(:o)”,
“眼镜”:阵列(“8)”,“8-”,
“kiss”:数组(“(K)”,“:-*”,
“monkey”:数组(“(M)”)};
/*用图像替换给定html中的所有表情符号
*/
函数表情符号(html){
for(表情符号中的变量表情符号){
对于(var i=0;i
要做到这一点,您需要正则表达式,因为
替换中的标志(您的
,“g”
)已被弃用,并且不能在所有浏览器上使用()

因此,您需要使用smiley代码创建regexp:

var re = new RegExp(emotes[emoticon][i], 'g');
但是由于你的笑脸密码有特殊的字符,你需要对它们进行转义。为此,我从以下代码中提取了一段代码:

最后,您可以使用
replace
替换您所有的笑脸,即使有多次相同的笑脸:

var escaped = escape(emotes[emoticon][i]);
var re = new RegExp(escaped, 'g');
html = html.replace(re,"<img src=\"http://www.oobenn.com/"+icon_folder+"/face-"+emoticon+".png\" class=\"emoticonimg\" alt=\""+emotes[emoticon][i]+"\"/>");
var escape=escape(表情符号[emoticon][i]);
var re=新的RegExp(转义为“g”);
html=html.replace(re,“”);

您的问题是什么?在您的示例中,工作正常吗,所有表情符号都出现了:)::)::):@P.Frank您在演示页面中看到红色文本了吗?问题就在那里。是的,我看到红色下面有所有表情符号text@P.Frank你能给我看看截图吗。因为我有个错误?谢谢你最好的回答。这对我来说是非常好的描述,我理解代码中缺少的东西。再次非常感谢你。
function escape(smiley){
  return smiley.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, "\\$1");
}
var escaped = escape(emotes[emoticon][i]);
var re = new RegExp(escaped, 'g');
html = html.replace(re,"<img src=\"http://www.oobenn.com/"+icon_folder+"/face-"+emoticon+".png\" class=\"emoticonimg\" alt=\""+emotes[emoticon][i]+"\"/>");