wordpress的一个问题

昨天在IE8下修改页面时还遇到了另一个问题。wordpress自作聪明的把一些标点符号,例如(’),(…)给自动转换为了UTF-8标准码格式,变成(’)和(…)。

我以前一直没有发现这个问题,因为在IE6,7和FX2,3下这些符号的显示并无任何夸张的地方(至少在我的电脑上如此)。这些符号虽然被转换为了UTF-8格式,但实际显示中还是很像半角引号。

不过,IE8开始遵守那个神秘的“标准”之后,如果你的blog和我的一样,是”*****’s blog”之类的名字,这个问题将显得异常明显,就会像图片中一样难看。
Bear's Blog New Zealand
询问Google大师之后,了解这个问题的根源在于/wp-includes/formatting.php这个文件中。猛击这个文件,删除wptexturize这个函数中你不喜欢的那些符号转换即可解决问题。

不过如果你和我一样对php一窍不通,而且很懒,有人写了一个小插件,Quotmarks Replacer,不到2k,能很好的解决这个问题,而且支持到wp 2.6。这个插件相当于禁掉了那个讨厌的函数。

我不知道wordpress这样做的目的是什么,洋人又不用全角标点符号。(啊,其实用的,只不过那个撇号不如图片中的那个一样夸张。)不过可以预见的是,如果IE8继续遵守这个标准,wordpress迟早得取消掉这种转换,否则将会对大量wordpress架设的英文blog带来麻烦。在英文中(’)这个符号用得太多了,中文反倒还好一些。

IE8 Beta 1

今天周末有空,下了IE8研究。我虽然不用IE,但问题是这个blog75%左右的访客都是IE用户。我不想当IE8正式发布的时候才发现我的页面一团糟。

虽然情况并不像我想象的一样糟,不过我还是花了一些时间处理。IE8下基本没有问题了。对我这种从没学过CSS,修改基本靠猜和运气的人,这简直就是一个奇迹。

就两个问题,导航栏定位使用的是position:absolute,但在IE8下,由于没有定义左边界,它的位置似乎是以blog标题的位置作为参照的(我不知道为什么,不是absolute吗?),因此被顶出右边界。

另外一个问题,footer被显示在了页面的上一个对象,也就是侧栏当中,而不是页面底部。

看上去应该都是对象前面的位置没有清干净造成的。在两个出问题的对象前加上<div style=”clear:both;”></div>,暂时解决问题。

不过这似乎也不是W3C标准……而且多了两个无意义的DIV,感觉总是有些不对。不管了,能显示正确就好,我不期望那么多。

这个blog 99.7%左右的访客使用IE, Firefox, Opera和Safari四种浏览器,一般人考虑IE和FX就已经很费神了,不过我的页面简单,所以今天多试了几个浏览器。

还好,看上去似乎全部正常。如果有没发现的bug,劳烦告诉我一声,谢谢。

至于Camino或者Konqueror(第一次在统计中看到这个浏览器)的使用者,我就只好对不起了,你们实在是稀有动物。

这方面不是我的职业,但我完全可以理解页面的兼容对设计者是一个多么大的问题。