在焦点/单击时选择contenteditable div中的所有文本
我有满足感的div如下所示。
12 some text...
我需要的是,当我点击div时,所有文本将自动被选中。 你能帮我解决一下吗?
试试这个:
12 some text...
这样做。 计时器适用于Chrome和Safari,因为在这些浏览器中,选择整个元素的本机浏览器行为似乎在焦点事件之后触发,从而覆盖选择代码的效果,除非推迟到焦点事件之后:
var div = document.getElementById("editable"); div.onfocus = function() { window.setTimeout(function() { var sel, range; if (window.getSelection && document.createRange) { range = document.createRange(); range.selectNodeContents(div); sel = window.getSelection(); sel.removeAllRanges(); sel.addRange(range); } else if (document.body.createTextRange) { range = document.body.createTextRange(); range.moveToElementText(div); range.select(); } }, 1); };
div
上focus
事件的问题是它无法触发,因为它认为div
不应该是可编辑的。 DOM中的可编辑内容在后台标有tabindex
,因此为了让div接收onfocus
事件,您需要显式声明div
的tabindex
属性。 HTML:
12 some text...
这应该与onfocus
。