【发布时间】:2020-12-12 06:28:48
【问题描述】:
我在 Windows 10 Pro 机器上使用 Mozilla Firefox (83.0)。
使用启用了 contenteditable 属性的简单正文标记,插入文本节点时我的插入符号会消失。我在 Chrome 版本 87.0.4280.88 上进行了完全相同的测试,但它的行为并非如此
这是一个演示。你也可以在https://jsfiddle.net/dg47mkat/1/找到小提琴
setTimeout(function(){
let range = document.getSelection().getRangeAt(0);
let element = document.createElement('span');
range.insertNode(element);
}, 10000);
<html>
<body contenteditable="true">
This is a test
</body>
</html>
确保单击文本中的某处以查看正在显示的插入符号,然后等待分配的超时运行。插入节点后,插入符号不再可见,除非您按箭头键或键入字符。
另外请注意,当有文本选择时,这不会发生。
2020-12-11:12:40 更新 我假设它的行为就像在 chrome 中一样,即插入符号保持原样。
【问题讨论】:
-
所有 ContentEditable API 实现都有自己的怪癖,这似乎是 Firefox 中的怪癖之一。但你的实际问题是什么?可能您想在插入空元素后在某处显示插入符号,但具体在哪里?
-
我已经更新了我的问题,以提及我希望它做什么。
-
看起来你需要在创建元素后添加
range.collapse();。如果您实际上是在向新元素添加文本,则可以将true传递给.collapse以将光标置于新元素的开头,省略参数或将其设置为false将光标移动到末尾的新元素。 -
@Teemu 虽然我没有提到它,但理想情况下,文本的选择将保持选中状态,我认为在这种特定情况下折叠不会起作用。事实上,如果我们特别关注我提到的工作流程而不进行选择,那么这将解决问题。
标签: javascript html firefox