Javascript Альтернатива для определения значения выбора, который не использует Xpath в IE? - PullRequest
0 голосов
/ 08 апреля 2020

У меня было рабочее решение для получения значения выбора с помощью Xpath. Обнаружено, что IE не поддерживает Xpath и выдает ошибку "XpathResult is undefined" !!! Я использую TMS (DTM), поэтому мне нужно внедрить мой код в веб-приложение. Я не могу коснуться кода веб-приложения. Исследуя это, я прочитал, что библиотека (https://github.com/google/wicked-good-xpath) может это исправить, но у меня нет такой опции. Если на первой странице вы наберете go до https://apply.essexcredit.com/, вы увидите только один вариант «Какой тип кредита вас интересует?». Мне нужно установить прослушиватель событий для этого элемента и получить выбранное значение (RV или Boat et c). Есть ли какой-то другой подход, который я могу использовать, чтобы присоединить к этому прослушиватель событий и получить значение? Вот текущий код, который у меня работает, когда поддерживается Xpath:

  function _dtmSetProductSel() {

    window.addEventListener("click", function() {

   var prodSel = document.evaluate("//form/div/div/div/div/div/div/div/div/div/div/div/div/div/div/div[@class='option-selected']", document, null, XPathResult.ANY_TYPE, null).iterateNext();

      if (prodSel) {
            var currProd = prodSel.getAttribute("title");

            if (currProd == "RV" || currProd == "Boat" || currProd == "Auto" || currProd == "Auto-IBG" || currProd == "Investment Line of Credit") {

                sessionStorage.setItem("_dtmSelProd", currProd);
            }

        } else {

            setTimeout(_dtmSetProductSel, 1000);
        }

    });

};

Ответы [ 2 ]

0 голосов
/ 08 апреля 2020
function _dtmSetProductSel() {
window.addEventListener("click", function() {
    var prodSel = document.getElementsByClassName("option-selected");
    var tryAgain = true;
    for(var i=0;i<prodSel.length;i++) {
        var currProd = prodSel[i].getAttribute("title");
        if(currProd && (currProd == "RV" || currProd == "Boat" || currProd == "Auto" || currProd == "Auto-IBG" || currProd == "Investment Line of Credit")) {
            sessionStorage.setItem("_dtmSelProd", currProd);
            tryAgain = false;
            break;
        }
    }
    if(tryAgain) {
        setTimeout(_dtmSetProductSel, 1000);
    }
});

};

0 голосов
/ 08 апреля 2020

Проверьте, можете ли вы использовать document.querySelector, как показано ниже.

var prodSelCSS = document.querySelector("form div.option-selected")

enter image description here

...