getElementByXPath - Небольшой gist для поиска элемента по XPath на JavaScript

Может кому пригодится для внутренних тестов.
Небольшой gist для поиска элемента по XPath на JavaScript Javascript => getElementByXPath · GitHub

document.getElementByXPath = function (sValue) {
    var a = this.evaluate(sValue, this, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,
        null);
    if (a.snapshotLength > 0) {
        return a.snapshotItem(0);
    }
};
document.getElementsByXPath = function (sValue) {
    var aResult = new Array();
    var a = this.evaluate(sValue, this, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
    for (var i = 0; i < a.snapshotLength; i++) {
        aResult.push(a.snapshotItem(i));
    }
    return aResult;
};
document.removeElementsByXPath = function (sValue) {
    var a = this.evaluate(sValue, this, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
    for (var i = 0; i < a.snapshotLength; i++) {
        a.snapshotItem(i).parentNode.removeChild(a.snapshotItem(i));
    }
};
2 лайка

Прикольно, этот document.evaluate() поддерживается всеми самыми древними версиями браузеров, кроме Internet Explorer

Помню немного смотрел в эту сторону (правда давно уже) и было сказано, что поддержка document.evaluate есть (посмотрел, что реализовали где-то в 2004 году) но не всегда работает или были какие-то проблемы (или может быть я ошибаюсь :slight_smile: ). Как сейчас, не знаю, может быть @TIT ответит, он у нас любитель internet explorer :smile: тем более у него есть такое отличное решение.