【问题标题】:Chrome v70+ has issue with innerText in td cellsChrome v70+ 在 td 单元格中存在 innerText 问题
【发布时间】:2018-10-31 07:27:02
【问题描述】:

这在 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 单元格。

【问题讨论】:

  • 感谢@brg 记录和追踪此事!随着 Chrome 更新在我们的组织中推出,这一变化正在破坏我们 Intranet 网站的一些小部分,供多个用户使用。 .trim() 修复当然有效。非常同意您的建议(这似乎正在被接受),即单个 td 的 innerText 不应附加任何内容,但在选择具有多个 tds 的内容时应该。

标签: google-chrome html-table


【解决方案1】:

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

【讨论】:

  • .innerText.trim() 或 .textContent 是在 Chrome 推出更好的修复之前使用的解决方案
【解决方案2】:

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

innerText functionality

【讨论】:

    【解决方案3】:

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

    在我的例子中,单元格中没有任何 HTML。我认为 .innerText 更清楚我只想要文本。但是,我想,如果您要将表格单元格转换为文本,您会希望使用这些分隔符。

    【讨论】:

      【解决方案4】:

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

      将 innerText 更改为 textContent 修复了它,这是违反直觉的,因为 textContent 应该保留与 pre 标记相同的空白,而 innerText 应该只是为您获取文本。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-04-26
        • 1970-01-01
        • 2020-08-28
        • 1970-01-01
        • 1970-01-01
        • 2011-10-07
        相关资源
        最近更新 更多