七月
31

修正关于Ajax comments的一个小问题

很多人都用willin的Ajax comments,确实是一个非常好的功能,我也一直在用。

我用的版本还是很早期的版本了,期间willin进行了多次修改升级,我一直没动,甚至换了现在新主题还是使用原来的版本。期间一直有一个问题困扰我,那就是当你发表重复评论时,评论框下方会出现提醒,但是此时我的整个博客页面也就错位了。

虽然老早就发现过此问题,但是由于几乎没什么影响(除了不小心的,谁还会没事连发相同的评论呢?),而且刷新后页面就会正常,所以一直没有想过去更改。

今天又再次重现了这个问题,所以我看不下去了,决定查找原因。

我用firebug查看了页面,发现页面文档结构貌似并没有出现错位什么的,那么就是说问题是出在css中了。果然,我一眼就看到body的样式中多了

-moz-border-radius:11px 11px 11px 11px;

这么个东西,我可没搞过这玩意儿。fdf

如图中红线部分。

再看图中黄色部分,是在install.css样式文件中。我主题里可没这个文件。这个文件是在wordpress的wp-admin/css/这个目录中。看来是从外部引入的文件,页面有变化的也就是评论框下方显示错误信息的位置了。

于是我又查看了显示错误信息位置的源码,终于发现了错误根源wew

其结构如下

<div style="display: none; background: url(&quot;http://127.0.0.1/qiqiboy/wp-admin/images/no.png&quot;) no-repeat scroll left center transparent; padding-left: 20px; margin: 0pt auto;" id="commenterror">
 
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
    <title>WordPress › 错误</title>
    <!--就是下面这个通过link标签进来的样式文件搞的怪-->
    <link type="text/css" href="http://127.0.0.1/qiqiboy/wp-admin/css/install.css" rel="stylesheet">
    <p>重复发表评论,您好像发表过类似的评论。</p>
</div>

所这下就好办了,直接到ajax评论的那段js里,找到

$('#commenterror').show('slow').html(request.responseText)

我的是老版本,不知道新版本代码里还是不是这样,还存不存在这个问题。Smug

将上面的js代码加个正则过滤,如下

$('#commenterror').show('slow').html(request.responseText.replace(/<(?!p).*?>(?:.*?<\/.*?>)?/gi,''));

这样就会过滤掉<meta><link>和<title>标签以及他们中间的内容,只留下需要的<p>标签。

这下,果然页面不会再出现错误了。

注意:这个错误貌似不是普遍的,有的人的在发生重复发表评论错误时,返回的信息中貌似就只包括“重复发表评论,您好像发表过类似的评论。”这句话,而不包括其他的<mata>、<link>等信息。

本文标签: , , , ,

分享

本文短网址: http://qiqi.boy.im/60

这篇文章已经有 46 条评论

Comments (44) Trackbacks (2)
You can leave a response or Trackback this entry .
  1. 西华秦 -#21

    其实我也遇到了这错误,照你的方法修正了,囧,不知道什么原因

  2. 泊风 -#22

    我也想用这个功能,不过我的评论回复位置不一样,现在搞得头大了还没找到解决的办法。

  3. 倡萌 -#23

    我自从使用Ajax comments以来,只要提交评论,就会看到错位,刷新一下就正常了,折腾很久都没有解决,不知道是不是和博主的一样呢,试试

  4. Demon -#24

    我用1.3版本的。发现管理员评论是正常的。退出后再评论就版面大乱了。

  1. Hello WordPress!

    [...] 2010.07 我开始爆发了,我折腾了很多,首先是wordpress无限嵌套的完美解决WordPress嵌套回复的层深问题(无限嵌套)<一>,还有如何通过JS自动处理文中的图片宽高,这个方法我一直在用哦:我是如何处理文章中图片的。想知道我评论框的那么多功能从哪里来的么,你看完这些你也能拥有和我评论框一样强大的功能了:评论框的简单计数器(无需改动模板,附带输入字数限制功能),添加引用按钮——轻松打造属于你的WordPress引用回复功能、为评论框添加文字格式化编辑器、【多彩的评论】:让评论可以插入图片,更改文字大小、颜色、让你的评论框自由粘贴代码、修正关于Ajax comments的一个小问题。还有关于如何创建邮件表单页面的创建一个可设置cookie相关信息的内置Email联系表单;如果你也想要知道wordpress不同页面显示不同的评论数以及楼层的显示,那么这篇文章也许会给你帮助wordpress指定页面评论数+支持分页的楼层显示 [...]

  2. 给wordpress加上QapTcha验证

    [...] 即可,这样就会过滤掉<meta><link>和<title>标签以及他们中间的内容,只留下需要的<p>标签。此方法来源于:qiqiboy [...]

Leave a Reply

Hi , say something.

  • :?:
  • :razz:
  • :sad:
  • :evil:
  • :!:
  • :smile:
  • :oops:
  • :grin:
  • :eek:
  • :shock:
  • :???:
  • :cool:
  • :lol:
  • :mad:
  • :twisted:
  • :roll:
  • :wink:
  • :idea:
  • :arrow:
  • :neutral:
  • :cry:
  • :mrgreen: