Firefox下英文字母不换行是一个非常恼人的bug,本文分析了国内外许多大型网站的做法,同时在文末提供了一种非常规解决办法,请根据情况选择合适的方案。
昨天测试人员来找我,说文本框输入英文不换行,我说你输入的什么英文?答全是一个字母:

同时反映不但文本框如此,普通的div亦然:

我看了一下,问题只在Firefox下输入一连串相同字母时会产生问题,其他情况,包括IE都没有问题。网上搜了一下,找到几种方法,基本都是讲IE下的换行控制,对FF无效。
“程序不决问Google,前端不决问雅虎”。打开雅虎一看,原来也有相同的问题,他们的做法就是,置之不理:

Yahoo文章评论截图

雅虎关系截图

雅虎口碑截图
腾讯前端在国内也算牛B,他们采取的方法是,超出部分隐藏,虽不会出现水平滚动条,却也只算是权宜之计:

腾讯新闻评论截图
由此推断,这确实算是FF的一个无法解决的bug,好在除了测试人员,没人会无聊到发表几百个字母的评论,为以防万一,我们只能overflow:hidden:

overflow:hidden;
所以,开头所说的最终解决方案就是——告诉测试人员:“Forget it!”。
这个问题单纯用CSS是无法解决的,为保险起见,大多数大型网站采取了“无视”的措施。当然如果严格要求解决这个问题,这里有JavaScript的解决方案,确实可以解决这个问题,但会给页面增添其他不确定因素。JavaScript的方法请参见:
http://dancewithnet.com/2008/12/04/word-break-all/

5 个评论:
你写这些等于没说。
同意楼上的
路过并且同意1楼和2楼的意见
同意以上意见
路过并且同意1楼和2楼3楼4楼的意见