Chrome v70+ 在 td 单元格中存在内部文本问题



这在 v69 及更低版本中有效。

单元格的每个 innerText 值在最后一个之前都有一个尾随字符。

在这里查看: http://jsfiddle.net/L16x9gpe/

<html>
<body>
<table>
<tr id='row'>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
</table>
</body>
</html>

编辑:我在这里提出了一个关于Chromium开发的问题:https://bugs.chromium.org/p/chromium/issues/detail?id=897373 目前似乎所有浏览器都不包含尾随字符问题,包括Firefox,其中显然是原始规范的。提交作者Yoshifumi Inoue(yosin@chromium.org(表示这应该是正确的实现。我认为它应该像其他浏览器一样运行,而不是这种差异化行为。whatwg 规范应更改为更具体,并且仅包含用于表或行 innerText 调用的尾随制表符 (U+0009(,而不是直接调用 td 单元格。

我有完全相同的问题。我现在使用的解决方法是将我的代码更改为cell.innerText.trim().

根据标准(基于下面的链接(,Chrome团队似乎"修复了一个无法正常工作的故障"。 这也让我对继承的应用程序措手不及。

内部文本功能

我正在做一些简单的文本比较,所以我切换到 .innerHTML,因为它似乎没有与 .innerText 相同的选项卡/LF 附加要求。

就我而言,单元格中没有任何 HTML。我认为.innerText更清楚,我只想要文本。但是,我想,如果您要将表格单元格转换为文本,则需要这些分隔符。

这破坏了我为客户编写的扩展。我正在检查 cells[blah].innerText == 'somevalue',当它们应该为真时,这些检查随着更新而变为假。

将 innerText 更改为 textContent 修复了它,这是违反直觉的,因为 textContent 应该像 pre 标签一样保留空格,而 innerText 应该只为你获取文本。

最新更新