IE9期间包装错误

5

我刚刚发现了一个IE9的小bug。看起来,IE9不认为在句号前面加空格是一个断点,比如在域名或文件扩展名列表中。请在IE9中打开以下fiddle。

http://jsfiddle.net/cssguru/nNnzM/1/

我尝试使用转义字符,但没有帮助。有什么解决方法吗?

IE10有同样的问题,虽然我不确定它是否是一个bug。这可能是故意的。 - Erik Funkenbusch
我发现添加" .web  .blog  .nyc ..."可以解决问题,但最终会出现两个空格。这对于我的需求来说是可行的,但我想我会保持线程开放,看看是否有其他人提出更简洁的解决方案。请参见http://jsfiddle.net/cssguru/nNnzM/4/。 - Adam Youngers
2个回答

6
这是一个令人烦恼的特性,但很可能是有意而非供应商认为的错误。相反,它被视为实现Unicode换行规则(部分规则相当奇怪)。根据这些规则,句号(或称为FULL STOP)具有插入数字分隔符的换行类别IS,“当不用于数字上下文时,中缀分隔符是结束句子的标点符号。因此,它们总是防止在其前面进行换行。”
为了解决这样的问题,现在最好在普通空格和句号之间插入U+200B零宽度空格。例如:
.web ​.shop ​.blog ​.nyc ...

U+200B是一种控制字符,允许在本不允许换行的位置进行换行。

旧版IE(IE 6)可能会出现问题,显示无法表示的字符符号代替U+200B。另一种方法是使用<wbr>标签,但似乎IE 8及更高版本经常无法遵守这个古老的标签(可能是因为它从未成为任何标准,尽管它很有用)。


哇!感谢您深入的回答。我认为我仍然偏爱我的" .web  .shop ...",但如果我没有得到更好的回答,我会给您以荣誉。 - Adam Youngers
+1 这是我在这里看到的最具信息量的答案之一。 - Jeremy J Starcher
我进行了更多的测试,看起来在IE8中,​和<wbr>都不起作用...http://jsfiddle.net/cssguru/nNnzM/17/ - Adam Youngers
@AdamYoungers,在我的测试中,&#x200b; 在 IE 8 上可以工作,尽管我实际上是在使用模拟的 IE 9 进行测试(包括怪异模式和标准模式)。你有在实际的 IE 8 上进行过测试吗?两种模式都测试了吗? - Jukka K. Korpela
是的,我使用完整安装进行了测试。 使用IE9测试旧版IE呈现引擎时,我遭受了太多的困扰。 我现在使用XP-More,并设置多个虚拟机来测试每个IE版本。 - Adam Youngers

0

问题在于它打断了单词。所以“.apartments”变成了“.apart ments”。 - Adam Youngers

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接