我在这样的表中有一些div:
<div contenteditable="true"
onfocus="document.execCommand('selectAll',false,null)">Something</div>
通过点击它来聚焦div时,一切正常,整个文本都被选中。
问题是我在按标签浏览div时需要相同的行为。实际上,按标签导航只是让我编辑div而不选择文本。
我怎样才能做到这一点?
答案 0 :(得分:3)
在元素聚焦后执行命令,而不是聚焦。为了延迟它,你可以use a timeout,这将把回调放在事件队列中,在元素被聚焦后执行它。
您的代码应该是(不使用任何内联脚本,但jQuery标记为问题):
$('div[contenteditable]').on('focus', function() {
setTimeout(function() {
document.execCommand('selectAll', false, null)
}, 0);
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div contenteditable>Something</div>
<div contenteditable>Something New</div>