javascript – 如何知道所选文本是否在特定div中

前端之家收集整理的这篇文章主要介绍了javascript – 如何知道所选文本是否在特定div中前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有两个div,如下所示:
<div id="div1">
<p>something</p>
<div><table><tr><td>Div1</td></tr></table></div>
</div>
<div id="div2">
<p>something else</p>
<div><table><tr><td>Div2</td></tr></table></div>
</div>
<button type="button">Check</button>

现在,我想知道何时选择某些文本然后按下按钮,如果所选文本在“div1”下面.我怎样才能做到这一点?

编辑:解决方案必须在IE-7及更高版本中运行.

解决方法

下面的elementContainsSelection()函数返回一个布尔值,表示指定的元素是否包含整个用户的选择,并且适用于所有主流浏览器,包括IE 6.

现场演示:http://jsfiddle.net/eT8NQ/

码:

function isOrContains(node,container) {
    while (node) {
        if (node === container) {
            return true;
        }
        node = node.parentNode;
    }
    return false;
}

function elementContainsSelection(el) {
    var sel;
    if (window.getSelection) {
        sel = window.getSelection();
        if (sel.rangeCount > 0) {
            for (var i = 0; i < sel.rangeCount; ++i) {
                if (!isOrContains(sel.getRangeAt(i).commonAncestorContainer,el)) {
                    return false;
                }
            }
            return true;
        }
    } else if ( (sel = document.selection) && sel.type != "Control") {
        return isOrContains(sel.createRange().parentElement(),el);
    }
    return false;
}

猜你在找的JavaScript相关文章