Ответ 1
Во-первых, подумайте, почему вы это делаете. Если вы пытаетесь запретить пользователям редактировать некоторые элементы, просто установите contenteditable
на false для этих элементов.
Однако вы можете делать то, что вы просите. Нижеприведенный код работает в Safari 4 и возвращает node выбор привязан (т.е. когда пользователь начал выбирать, выбор "назад" вернет конец, а не начало) - если вы хотите, чтобы тип элемента как string, просто получите свойство nodeName
возвращаемого node. Это работает и для нулевой длины (т.е. Только позиция каретки).
function getSelectionStart() {
var node = document.getSelection().anchorNode;
return (node.nodeType == 3 ? node.parentNode : node);
}