【发布时间】:2014-04-15 18:14:08
【问题描述】:
当我使用 Node.normalize() 函数连接相邻的文本节点时,我遇到了一个问题,即具有某些字符的 DOM 文本节点在 IE 中表现异常。
我创建了一个 Codepen 示例,它允许您重现 IE11 中的错误:http://codepen.io/anon/pen/BxoKH
IE11 中的输出:'- 示例'
Chrome 和早期版本 IE 中的输出:'Test - Example'
如您所见,这会截断减号之前的所有内容,减号显然被视为分隔符,显然是由于 Internet Explorer 11(但不是 IE10 或 IE8,甚至 IE6)。
谁能解释为什么会发生这种情况,有没有人知道导致此问题的其他字符序列?
编辑 - 我编写了一个代码笔,它将测试 Unicode 字符的各个部分以识别导致此行为的字符。它似乎影响的角色比我最初意识到的要多:
http://codepen.io/anon/pen/Bvgtb/ 这会测试 32-1000 的 Unicode 字符并打印那些未通过测试的字符(当节点标准化时截断数据)您可以对其进行修改以测试其他字符范围,但要小心在 IE 中将范围增加太多,否则它会冻结。
我创建了一个 IE 错误报告,Microsoft 报告说能够根据我提供的代码示例重现它。如果您也遇到此问题,请投票: https://connect.microsoft.com/IE/feedback/details/832750/ie11-node-normalize-dom-implementation-truncates-data-when-adjacent-text-nodes-contain-a-minus-sign
【问题讨论】:
-
什么版本的IE?我在 IE8 和 IE10 上都得到了预期的结果,不需要解决方法。
-
抱歉,IE11,正在测试更多浏览器版本。
-
事实上,它甚至可以在没有解决方法的情况下在 IE6 中工作:jsbin.com/xoxenara/1 究竟是什么错误?
-
哇,但是在 IE11 中失败了。
-
这实际上有一个错误...规范化在 IE 11 中被破坏 connect.microsoft.com/IE/feedback/details/809424/…
标签: javascript html internet-explorer dom