切换到带有<div>
的jQuery UI标签,其中包含需要包装的行并使用以下CSS:
.console {
white-space: pre-wrap;
word-break: break-all;
}
最近在Chrome中变得非常慢。这种情况在过去3个月内发生了Chrome更新或(我目前在Chrome 49上) - 同样的例子在IE 11和Firefox 44中都运行得非常快(都在Windows 7上测试过)
有关示例,请参阅以下jsFiddle https://jsfiddle.net/7f7btvb6/3/。
Tab1和Tab2都设置了white-space: pre-wrap;
和word-break: break-all;
属性。 Tab1有20000个短行,并且相当快(切换到它时只有轻微的延迟。)Tab2有2000行,但它们需要换行,这需要很长时间才能在Chrome中显示 - 在我的电脑上大约需要30秒。
Tab3和Tab4与Tab2具有相同的数据,但在Tab3中white-space
设置为pre
而不是pre-wrap
,并且在Tab4中word-break
未设置,并且这两个标签显示速度相当快(在我的电脑上大约1秒钟)。
这是最新版Chrome的问题,还是jQuery UI与最新Chrome版本之间的某些互动?或者我错过了什么或做错了什么?
非常感谢任何帮助或建议!
编辑:我使用Tab5更新了小提琴,使用word-wrap: break-word;
代替word-break: break-all;
,如下所示,我还在示例文本中添加了一些破折号,以显示不同的包装行为。 Tab5确实和Tab3和Tab4一样快,但不像Tab2那样在行尾包装,这理想情况下我的用例更喜欢。但我现在会使用它,因为这种包装方式仍然优于30多秒的延迟。谢谢!
Edit2:我认为这与jQuery甚至JavaScript都没有关系 - 这里https://jsfiddle.net/edpq5qcy/3/是一个新的jsFiddle,简化为word-break: break-all;
的基本用法 - 在Chrome中运行此需要30使用2000行+秒,而在Firefox中则为<1秒。调整窗口大小会触发自动换行重新计算,Chrome会再次延迟30秒,但在Firefox中几乎是即时延迟等等。我觉得这必定是某种Chrome错误。
Edit3:仅供参考这个问题已在Canary版本52.0.2712.0中修复(请参阅here) - 它有望在2016年7月底之前进入稳定的Chrome版本。