年少轻狂,幸福时光

去除评论回复@user中的空格

技术文档 7803浏览 0评论

很多主题中实现了评论回复@user的功能,比如iNoveBlocks2以及paled等,其中主要用到的一个核心js函数是:

1
2
3
4
5
function reply(replyID,authorId, commentId, commentBox) {
        var author = document.getElementById(authorId).innerHTML;
        var insertStr = '<a href="#' + commentId + '">@' + author.replace(/\t|\n|\r\n/g, "") + ' </a> \n';
        appendReply(insertStr, commentBox)
    }


发现一个小小的bug,在我的主题中,点击Reply以后,评论框中的用户名连接会出现一个空格,很不好看,如下图:

这个bug在IE下面不会出现,在Chrome和火狐等浏览器下面会出现,在大部分网友的主题中不会出现,在我的主题中曾经也是正常的,但是不知道哪次改动之后,就一直这个样子,用最初的js文件覆盖过去,仍然是这样。百思不得其解,难道是RPWT?

没办法,只好对这个函数进行一个小改动了,大意也就是通过replace函数中的正则式去掉空格,改后代码如下:

1
2
3
4
5
function reply(replyID,authorId, commentId, commentBox) {
        var author = document.getElementById(authorId).innerHTML;
        var insertStr = '<a href="#' + commentId + '">@' + author.replace(/\t|\n|\r\n|\s/g, "") + ' </a> \n';
        appendReply(insertStr, commentBox)
    }

其实点击Quote也会出现同样的问题,那么也需要对其函数进行修改,修改后的函数如下:

1
2
3
4
5
6
7
8
9
    function quote(authorId, commentId, commentBodyId, commentBox) {
        var author = document.getElementById(authorId).innerHTML;
        var comment = document.getElementById(commentBodyId).innerHTML;
        var insertStr = '<blockquote cite="#' + commentBodyId + '">';
        insertStr += '\n<strong><a href="#' + commentId + '">' + author.replace(/\t|\n|\r\n|\s/g, "") + '</a> :</strong>';
        insertStr += comment.replace(/\t/g, "");
        insertStr += '</blockquote>\n';
        insertQuote(insertStr, commentBox)
    }

改后效果如下:

效果应该是正常的,在Chrome、火狐、IE下面测试都正常,各位也可以帮忙测试一下,多谢。

PS:用了Timthumb的同学要注意了,这个东东最近除了安全漏洞,大家赶紧补一下。请移步:
http://winysky.com/repair-due-to-serious-security-vulnerabilities-timthumb

转载请注明:自由的风 » 去除评论回复@user中的空格

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

网友最新评论 (9)

  1. 还没遇到过 顶 :mrgreen:

    iSayme2011-08-15 07:32 回复
    • 出现的概率貌似较小。

      自由的风2011-08-15 08:07 回复
    • 想不到我竟然成了一个例子。呵呵。这个是治标不治本,要找出为什么会出现这个空格的。

      DH2011-08-15 11:16 回复
      • @DH 应该不是我的名字的原因吧?

        DH2011-08-15 11:16
      • @DH
        呵呵,不是故意做为例子滴。
        不是你名字的原因,名字在页面上显示都是正常的,只是获取后不太正常。
        具体原因我也找了好久,无果。
        这样的做法也是可以解决问题的。

        自由的风2011-08-15 11:21
  2. 收到pingback了,过来看看

    winy2011-08-15 12:30 回复
  3. 没遇到过

    IM路人2011-08-16 11:20 回复
    • 我的这个看起来比较特殊,我也没有找到具体原因。

      自由的风2011-08-16 12:18 回复