问题的旧版本如下,经过更多研究后,我决定重新表述这个问题。和以前一样,问题是,我需要聚焦一个 contenteditable div 而不突出显示文本,在 Chrome 中直接聚焦突出显示文本。
我意识到人们通过重置文本区域中的插入符位置来解决文本区域中的这个问题。如何使用 contenteditable 元素做到这一点?我尝试过的所有插件仅适用于文本区域。谢谢。
问题的旧措辞:
我有一个 contenteditable 元素
我想集中注意力,但仅限于此
将光标置于前面
元素,而不是选择
一切。
elem.trigger('focus');
用jquery
选择整个文本中的所有文本
铬元素。火狐浏览器的行为
正确地,将插入符设置在
正文前面。我怎样才能得到
Chrome 按照我想要的方式运行,或者是
焦点也许不是我正在寻找的
为了。
谢谢大家。
也许我误读了这个问题,但以下不会做(假设可编辑<div>
id 为“可编辑”)?计时器之所以存在,是因为在 Chrome 中,选择整个元素的本机浏览器行为似乎是在focus
事件,从而覆盖选择代码的效果,除非推迟到焦点事件之后:
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);
range.collapse(true);
sel = window.getSelection();
sel.removeAllRanges();
sel.addRange(range);
} else if (document.body.createTextRange) {
range = document.body.createTextRange();
range.moveToElementText(div);
range.collapse(true);
range.select();
}
}, 1);
};
div.focus();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)