如何将插入符号放在空DOM元素节点中

dis*_*cer 4 html javascript dom

如何将插入符号(折叠范围)放在空元素节点中.这段代码应该可行,但它没有.

node = document.getElementById('some-empty-strong-node')
range = document.createRange()
range.selectNodeContents(node)
window.getSelection().addRange(range)
Run Code Online (Sandbox Code Playgroud)

尝试其他技巧,例如在元素节点内添加一个空文本节点,或者在节点内设置范围start,在其他地方设置范围结束,然后折叠范围也不起作用.Anoyone有想法?

Tim*_*own 7

这在Firefox和Opera中是可行的,但在WebKit和IE <= 8中都是不可能的.

WebKit有一个长期的错误来解决这个问题:https://bugs.webkit.org/show_bug.cgi?id = 15256为空元素案例和https://bugs.webkit.org/show_bug.cgi?id= 23189表示将插入符号放在文本节点开头的一般情况.最后我听说它可能需要几年时间才能修复.

IE <= 8有关于选择的各种问题,其中只有一个.IE 9引入了DOM2 Range支持和HTML5 Selection支持,你的代码可能在IE 9中运行(我现在无法测试).

  • 再过3年,这个bug似乎仍然存在! (4认同)
  • @Andy:很好,我认为可能.WebKit拖延此事现在变得非常恼人:它已经有三年半了. (2认同)