通过 .classList.add('') 增加的 class (在移动端 WebKit)无法通过 .classList.remove('') 移除是为什么? 增加一个 class 的本质是什么?

2015-04-27 11:35:39 +08:00
 iugo
一个简单的例子:
http://codepen.io/iugo/pen/pJveKZ

一个实用的例子:
http://codepen.io/iugo/pen/aOzJRe

简单的例子在 Firefox 和移动端都很好地实现了功能.

但是实用的例子在 Firefox 实现了功能, 但在移动端却无法移除 class, 导致功能缺失.

测试环境:
Firefox: Ubuntu(64bit) 37
移动端: iOS 8(Safari) and Android 4.4(Chrome)
3073 次点击
所在节点    JavaScript
9 条回复
iugo
2015-04-27 12:03:59 +08:00
简单的例子在 Android 4.4(Chrome) 上正常.
但是在 iOS 8(Safari) 上不正常.
morethansean
2015-04-27 12:15:34 +08:00
iugo
2015-04-27 14:29:14 +08:00
@morethansean 应该不是这么简单的问题.

如果需要移除 html 中写的 class, 则没有问题.
但如果使用一个函数向 classList 中增加 class, 则 Firefox 正常, WebKit 无法实现.
otakustay
2015-04-27 14:39:34 +08:00
iOS safari就没触发scroll事件,不是classList的问题……
otakustay
2015-04-27 14:40:04 +08:00
iugo
2015-04-27 14:44:27 +08:00
@otakustay 移动端由 scroll 类似的事件吗? 或有什么库推荐吗?
iugo
2015-04-27 14:48:29 +08:00
@otakustay 简单的例子和实用的例子在 Chrome(Android) 里也是有区别的.

在简单的例子中:
只要滑动就触发了事件绑定的函数.

在实用的例子中:
滑动后需要在空白处点击一下才触发.

这个是什么情况?
otakustay
2015-04-27 14:48:38 +08:00
@iugo Stackoverflow上有些相关的问题

http://stackoverflow.com/questions/9225525/how-can-i-monitor-scroll-position-while-scrolling-in-safari-on-ios

总得来说乖乖touchstart的时候开始setInterval判断scrollTop……
otakustay
2015-04-27 15:38:13 +08:00
@iugo 厄,我没有android的手机……我看有时间的话去借一个来帮你看看问题- -

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/186626

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX