此脚本的目的是根据查询字符串隐藏和显示图形元素。例如,website.com/repair-catalog?catalog=brand1。
此脚本可在台式机以及我所见过的Android设备上运行。但是在iOS Safari上,该脚本似乎不起作用。
如果我确实访问过:website.com/repair-catalog?catalog=brand1
。
case "brand1"
将会开始,并将继续只显示具有innerText的耳机,耳塞和扬声器的数字。并隐藏其他数字。再次适用于台式机和Android。但是,当我在iOS Safari上访问该页面时,case "brand1"
正在运行,但没有显示耳机,耳塞和扬声器……该脚本自动进入default
情况。
为什么此脚本不能像台式机和Android那样在Safari iOS上运行?它不应该隐藏所有数字。案例中只有不匹配的数字。
我试图重写脚本,以使其不使用URLSearchParams
,switch statements
和forEach
循环。但是我最终还是在台式机和Android上工作但在Safari iOS上工作却得到了相同的结果。在Safari iOS上,默认情况下会一直运行。
注意,我已经检查了typeof figure.innerText
,它是一个字符串,这意味着它应该与case "brand1"
相匹配。它可以在Desktop和android上正确执行此操作。
const catalogQuery = new URLSearchParams(document.location.search);
const catalogType = catalogQuery.get("catalog")
const nodeList = document.querySelectorAll(".figure-wrapper a figure");
const x = [...nodeList];
try {
if (catalogType !== null) {
switch (catalogType) {
case "brand1":
x.forEach(figure => {
switch (figure.innerText) {
case "HEADPHONES":
figure.style.display = "block";
figure.parentElement.attributes[0].value = "/headphones";
break;
case "EARBUDS":
figure.style.display = "block";
figure.parentElement.attributes[0].value = "/earbuds";
break;
case "SPEAKERS":
figure.style.display = "block";
figure.parentElement.attributes[0].value = "/speakers";
break;
default:
figure.parentElement.style.display = "none";
break;
}
});
break;
default:
location.href = "/repair-catalog";
break;
}
}
} catch (err) {
console.log(err);
}
答案 0 :(得分:0)
URLSearchParams
。
请使用polyfill或拆分url参数,并使用查询参数值。