我想检查选择或光标是在元素中还是在元素中的元素中。
我以为我可以浏览所选元素的父元素来检查这个。 像这样:
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及以下版本中获取所选元素 有人知道怎么做吗? 或者有人知道如何使用其他解决方案吗?
答案 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
如果有人有更好的想法来解决我的问题然后通过所有的父元素,我将很高兴听到它。