![](/img/trans.png)
[英]Twilio video fails in Chrome on Android and Safari on iOS, works on desktop
[英]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 中那样工作? 它不应该隐藏所有数字。 只有在案例中不匹配的数字。
我试图重写我的脚本,以便它不使用URLSearchParams
、 switch statements
和forEach
循环。 但是我最终在桌面和 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.