我正在寻找一种跨浏览器方式来包装长度预定宽度的div中没有空格(例如长网址)的文本。
这里有一些我在网上找到的解决方案,为什么他们不为我工作:
> overflow:hidden / auto / scroll – 我需要整个文本是可见的,无需滚动。 div可以垂直生长,但不能水平生长。
>注射&害羞;通过js /服务器端到字符串 – & shy;现在支持FF3,但复制和粘贴带有& shy;在中间不会在Safari中工作。此外,据我所知,没有一个干净的方法来测量文本宽度,找出最好的字符串偏移来添加这些字符(有一个hacky的方式,请参见下一项)。另一个问题是,放大Firefox和Opera可以轻松地打破这一点。
>将文本转换为隐藏元素并测量offsetWidth – 与上面的项目相关,需要向字符串中添加额外的字符。此外,测量长文本中需要的断开量可能容易需要成千上万的昂贵的DOM插入(每个子串长度一个),这可以有效地冻结站点。
>使用等宽字体 – 再次,缩放可以搞乱宽度计算,并且文本不能自由样式。
看起来有前途但不完全相同的事情:
> word-wrap:break-word – 现在是part of CSS3 working draft,但它不支持Firefox,Opera或Safari。这将是理想的解决方案,如果它工作在所有浏览器今天:(
> injection< wbr>标签通过js /服务器端到字符串 – 复制和粘贴URL在所有浏览器中工作,但我仍然没有一个很好的方法来衡量在哪里放置休息。此外,此标记会使HTML无效。
>在每个字符后添加断点 – 它比成千上万的DOM插入更好,但仍然不理想(将DOM元素添加到文档中会占用内存,并减慢选择器查询等)。
有没有人有更多的想法如何解决这个问题?