2

操作系统:Linux Mint 18.3、Firefox 72。

我已经探索过这种现象,我发现它只存在于 FF 中,而不存在于 Chrome 中(例如)。

通常,当元素的全局属性contentEditable设置为时,此问题适用于元素(可能是DIVTD)。 true

如果你去这里,你可以自己看到问题,获取 HTML + JS 并在你的浏览器中运行它。

具体的问题,当你加载那个文件时,如果你把光标放在“ipsum”之后,然后按Ctrl-Backspace,就可以看到删除“ipsum”这个词。结果似乎还可以:当您看到光标在那之后闪烁时,“Lorem”之后似乎有一个尾随空格。但是,当我随后键入一些字母时,它会卡在“Lorem”上……例如,我键入“m”,然后看到“Lorem”。

这不是它在 Chrome 中处理同一个 HTML 文件的方式:在那里,当我输入“m”时,我看到了“Lorem m”。

更奇怪的是,当我在 Firefox 中输入更多单词时,在“Lorem ipsum”之后 ... 然后使用 Ctrl-Backspace 并开始输入,问题不会发生:尾随空格被正确保留。

我在 FF 中观察到的另一件事:如果我没有使用 Ctrl-Backspace,而是重复使用 Backspace,即逐个字母,直到我删除“ipsum”,留下尾随空格。如果我然后开始输入...保留尾随空格。

我已经写了一个MutationObserver来看看这里发生了什么以及是否有可能的解决方法。问题是 FF 浏览器实际上在MutationObserver触发任何事件之前会进行此修剪。

我正在研究一种可能的解决方法,即捕获关键事件,如果是“Ctrl + Backspace”来执行event.preventDefault()。这确实阻止了单词删除的发生。然后我必须实施一个替代解决方案,可能涉及逐个字母删除,直到找到空白。

这对我来说似乎是一个错误。

这是一个可能的线索:当我第一次捕获此事件(即在 Ctrl-Backspace上)并检查空间已被修剪。我已经对此进行了一些阅读,他们说,这似乎主要与“某些文本如何在页面上呈现”有关。event.targetinnerHTMLinnerTextinnerText

4

0 回答 0