开发者

ContentEditable focus in Chrome/Safari

开发者 https://www.devze.com 2023-01-19 06:17 出处:网络
I have a contenteditable div which needs to be focussed at pageload (place cursor at the first line).

I have a contenteditable div which needs to be focussed at pageload (place cursor at the first line).

document.getElementById("editor").focus() works well in Firefox and IE, but in Chrome/Safari it just selects the entire content!

Is there a way to make this work properly?

Thanks in advance,开发者_开发问答

Shesh


This question may no longer be relevant to the questioner but I'll answer it for future readers. The basic principle is to set the selection to a collapsed range at the start of the element.

I solved this problem by using the Rangy JS library: http://code.google.com/p/rangy

var r = rangy.createRange();
r.setStart( document.getElementById('editor'), 0 );
r.collapse(true);
rangy.getSelection().setSingleRange(r);

This might be more than is necessary but it definitely works cross-browser and Rangy provides a bunch of extra utilities as well so it's probably worth looking into :)


I was able to add focus to a DIV by calling the focus() method chained to the attr() method

$el.attr('contenteditable', "true").focus()
0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号