提问人:Michael Johns 提问时间:4/8/2020 更新时间:4/9/2020 访问量:76
用于检测 IE 中不使用 xpath 的选择值的 Javascript 替代方案?
Javascript Alternative for Detecting Select Value Which Doesn't Use Xpath in IE?
问:
我有一个可行的解决方案来使用 Xpath 获取选择的值。发现 IE 不支持 Xpath,并抛出“XpathResult 未定义”错误!!我正在使用 TMS (DTM),因此我必须将代码注入 Web 应用程序。我无法触摸 Web 应用代码。在研究这个问题时,我读到图书馆(https://github.com/google/wicked-good-xpath)可以解决这个问题,但我没有那个选择。如果你去第一页的 https://apply.essexcredit.com/,你只会看到一个选择“你对什么类型的贷款感兴趣?我需要在此元素上设置一个事件侦听器并获取所选值(RV 或 Boat 等)。我可以使用任何其他方法来将事件侦听器附加到此事件并获取值?这是我当前拥有的代码,在支持 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);
}
});
};
答:
0赞
supputuri
4/8/2020
#1
检查是否可以如下图所示使用。document.querySelector
var prodSelCSS = document.querySelector("form div.option-selected")
0赞
Michael Johns
4/9/2020
#2
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赞
Deepak-MSFT
4/9/2020
感谢您发布此问题的解决方案。我建议您尝试在 48 小时后标记您自己对这个问题的答案,当它可以标记时。它可以在未来帮助其他社区成员解决类似的问题。感谢您的理解。
评论
form div.option-selected