iOS Safari Javascript无法正常运行,但可以在台式机和Android上运行

时间:2020-01-03 08:20:57

标签: javascript ios dom safari

此脚本的目的是根据查询字符串隐藏和显示图形元素。例如,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上运行?它不应该隐藏所有数字。案例中只有不匹配的数字。

我试图重写脚本,以使其不使用URLSearchParamsswitch statementsforEach循环。但是我最终还是在台式机和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);
}

1 个答案:

答案 0 :(得分:0)

并非所有版本的safari或更旧的浏览器都支持

URLSearchParams

请使用polyfill或拆分url参数,并使用查询参数值。