【问题标题】:classlist.toggle() does not work as expected on mobile safariclasslist.toggle() 在移动 safari 上无法按预期工作
【发布时间】:2017-11-30 04:03:37
【问题描述】:

我有一个功能可以将开放类添加到下拉菜单中,以便它在移动浏览器上保持打开状态 该功能在 safari 上也能正常工作,但现在我发现它不像以前那样在 safari 上工作 问题:它会打开下拉菜单,但只有在您重新加载网站(或切换到另一个网站)时才会关闭

经过测试,我一无所知,因为我不知道该代码甚至会出现什么问题。 在 chrome、firefox、edge 中也可以在 android 上的 chrome 中正常工作

函数如下(很简单)

function togglenav(tagid) {
    document.getElementById(tagid).classList.toggle('navopen');
}

知道只有在 safari 上会出现什么问题吗?

编辑:更正应该告诉它在哪些浏览器上工作的句子(忘记说明这一点的部分)

【问题讨论】:

  • ClassList 不受 safari
  • 我自己没有 iphone,一个朋友在他的手机上为我测试过它有效,他告诉我他的意思是它是一个不再更新的旧版本。几天前有人告诉我这对他不起作用,另一位朋友再次测试了它(他的意思是他的 safari 版本不超过一个月) - 如果我的另一个朋友有时间再次测试(使用旧的 safari 版本)他会测试又来了
  • 哦,我忘了,用旧版 safari 为我测试它的朋友,它工作的测试就像一年前一样,从那时起代码没有改变(并且再也没有从任何有 iPhone 的人)
  • classList 问题也出现在新 iPhone X 上。在发生另一个事件之前,切换不会生效..奇怪..我希望从这里得到解决方案。
  • @KalleH.Väravas 遗憾的是我从来没有为此找到一个,但这只是 CSS 下拉不起作用的手机(特别是 iPhone)的修复。但我找到了修复 iphone 上的 css 下拉菜单的解决方案,因此即使无法关闭它也至少会打开。对于任何感兴趣的人:对于使用 :hover 的下拉菜单,它必须是浏览器知道它具有操作的元素,例如 a 标签,添加 onclick="";也可以。我两者都做了,用 onclick 把它变成了一个标签,以防止 # set as heref 出现在链接本身中。

标签: javascript mobile-safari


【解决方案1】:

在没有内容拦截器的情况下重新加载?

不确定这是否与您遇到的情况相同,但我有 almost identical JavaScript 在我妻子的 iPhone X 上的移动 Safari 中工作,但在我的 iPhone 6 上却没有。结果证明模型无关紧要。我在我的 iPhone 上运行了 Better 广告/跟踪拦截器,它阻止了脚本的加载。

如果是这种情况,请点按/按住 URL 并“重新加载而不使用内容拦截器”。为我工作,但值得记住的是,我妻子手机上的移动 Safari 可以顺利加载它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-11-11
    • 2022-12-13
    • 1970-01-01
    • 2014-07-20
    • 2019-01-15
    • 2014-10-20
    • 2021-08-13
    • 1970-01-01
    相关资源
    最近更新 更多