从oldIE中的光标/选择中获取所选元素

时间:2014-09-27 17:10:25

标签: javascript dom internet-explorer-8 selection

我想检查选择或光标是在元素中还是在元素中的元素中。

我以为我可以浏览所选元素的父元素来检查这个。 像这样:

var elements = [el_1, el_2, el_3]; // element x, y and z

function elementActiv(el) {
    if (elements.indexOf(el) == -1) {
        if (el.parentElement) {
            return elementActiv(el.parentElement);
        }
        else {
            return false;
        }
    }

    return true;
}

function check() {
    var selectedElement;

    if (typeof window.getSelection != "undefined") {
        // IE 9 and other non-IE browsers
        selectedElement = window.getSelection().baseNode.parentElement;
    }
    else if (document.selection) {
        // IE 8 and below
        selectedElement = ???; // How to get the selected element here??
    }

    if (selectedElement) {
        return elementActiv(selectedElement);
    }
}

我的问题是我不知道如何在IE 8及以下版本中获取所选元素 有人知道怎么做吗? 或者有人知道如何使用其他解决方案吗?

1 个答案:

答案 0 :(得分:0)

我找到了解决方案,以便在IE 8及更低版本中获取所选元素。

document.selection.createRange().parentElement()

感谢。

<小时/> 请注意,您需要IE的indexOf原型:

if (!Array.prototype.indexOf) {
    Array.prototype.indexOf = function(obj, start) {
        for (var i = (start || 0), j = this.length; i < j; i++) {
            if (this[i] === obj) {
                return i;
            }
        }
        return -1;
    }
}


Idae从这里开始:
How to fix Array indexOf() in JavaScript for Internet Explorer browsers


如果有人有更好的想法来解决我的问题然后通过所有的父元素,我将很高兴听到它。