我正在为我的网站编写笑脸解析功能。我想要完成的是转换某些字符串,例如":)"
变成这样的图像:
或者以实际的 html 为例:
":)" ===> <img src="images/smilies/smile.png" />
我的函数做了它应该做的事情,但它也在解析原生 javascript 函数名!我的意思是,如果我键入包含字符串"push"
、"pop"
或"some"
(可能还有其他负载)的注释,我的函数会将这些字符串解析为无效图像,如下所示:
这是一个显示此内容的 html 字符串:
<img src="images/smilies/function some() { [native code] }" alt="">
这会导致浏览器控制台中出现 404 not found 错误。
Failed to load resource: the server responded with a status of 404 (Not Found)
为什么会这样?正如您在此处看到的,我没有在我的代码中做任何不寻常的事情:
function parse_new_comment(commentElem){
$(commentElem).html(parse_comment($(commentElem).text()));
}
function parse_comment(comment){
var formatted_comment = "";
var smilies = new Array();
smilies[":)"] = "smile.png";
smilies[":D"] = "smile-big.png";
smilies[":p"] = "tongue.png";
smilies["[sheep]"] = "sheep.png";
smilies["<3"] = "love.png";
smilies["[love]"] = "love.png";
var words = comment.split(" ");
for (var i = 0; i < words.length; i++) {
if(smilies[words[i]] !== undefined){
formatted_comment += ' <img src="images/smilies/'+smilies[words[i]]+'" alt="" />';
}else{
formatted_comment += ' ' + words[i];
}
}
return formatted_comment;
}
我有一种感觉,这行代码导致了问题if(smilies[words[i]] !== undefined){
,就像数组函数一样push
,pop
虽然我不太确定......如果有人能就我的函数失败的原因提出任何想法,我将不胜感激。
哦,我忘了提,我的页面使用 ajax 来做所有的事情,所以新的评论是通过调用这样的函数来解析的:
parse_new_comment($("#comment_343"));
谢谢你。