繁体   English   中英

iOS Safari Javascript 不工作,但在桌面和 Android 上工作

[英]iOS Safari Javascript not working but works on Desktop and Android

此脚本的目的是根据查询字符串隐藏和显示图形元素。 例如, website.com/repair-catalog?catalog=brand1。

这个脚本适用于桌面和我所看到的 Android 设备。 但是在 iOS Safari 上,该脚本似乎不起作用。

如果我确实访问过: website.com/repair-catalog?catalog=brand1

case "brand1"将开始,并将继续仅显示带有耳机、耳塞和扬声器的case "brand1"数字。 并隐藏其他人影。 再一次,这适用于桌面和 Android。 但是当我在 iOS Safari 上访问该页面时, case "brand1"正在运行,而不是显示耳机、耳塞和扬声器......脚本会自动进入default案例。

为什么此脚本在 Safari iOS 上不能像在桌面和 Android 中那样工作? 它不应该隐藏所有数字。 只有在案例中不匹配的数字。

我试图重写我的脚本,以便它不使用URLSearchParamsswitch statementsforEach循环。 但是我最终在桌面和 Android 上得到了相同的结果,但在 Safari iOS 上却没有。 在 Safari iOS 上,默认情况一直在运行。

请注意,我已经检查了typeof figure.innerText并且它是一个字符串,这意味着它应该匹配case "brand1" 它在桌面和 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);
}

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM