Ответ 1
Здесь функция, которая предоставит вам самый внутренний элемент, который содержит весь пользовательский выбор во всех основных браузерах (кроме случаев, когда выбраны несколько диапазонов, которые поддерживаются только в Firefox. Если это важно, я могу расширить пример также иметь дело с этим делом):
function getSelectionParentElement() {
var parentEl = null, sel;
if (window.getSelection) {
sel = window.getSelection();
if (sel.rangeCount) {
parentEl = sel.getRangeAt(0).commonAncestorContainer;
if (parentEl.nodeType != 1) {
parentEl = parentEl.parentNode;
}
}
} else if ( (sel = document.selection) && sel.type != "Control") {
parentEl = sel.createRange().parentElement();
}
return parentEl;
}