给定javascript选择对象确定HTML节点名称

时间:2011-08-05 20:26:41

标签: javascript dom selection

如何确定与给定javascript选择对象关联的节点(与此innerHTML关联的标记)?我正在使用window.getSelection(),并想知道选择所在的div / span类。

谢谢!

1 个答案:

答案 0 :(得分:1)

如果您想要包含整个选择的最深元素,最简单的方法是从选择中获取Range对象并使用其commonAncestorContainer属性。

jsFiddle:http://jsfiddle.net/5LvEG/1/

代码:

function getSelectionContainerElementId() {
    var sel = window.getSelection();
    if (sel.rangeCount > 0) {
        var range = sel.getRangeAt(0);
        var container = range.commonAncestorContainer;

        // container could be a text node, so use its parent if so
        if (container.nodeType == 3) {
            container = container.parentNode;
        }
        return container.id;
    }
    return null;
}

alert(getSelectionContainerElementId());