我在移动网站上的表单中有一系列选择元素。这些选择元素位于通过 JS 和 CSS3 转换处理的滚动窗格内,因此首先要在选择上注册触摸/单击/任何事件就已经足够痛苦了。但是,我现在发现,仅在 android 上,即使选择被点击,并且正在获得焦点 - 他们只是拒绝打开。我 100% 确定选择正在获得他们的焦点事件(通过调试),所以老实说,我完全被难住了。没有调试,选择上没有其他焦点/模糊事件。它在 iPhone 上运行良好......有什么想法吗?
2 回答
我一直在用同样的问题把头撞在墙上。它似乎与 Android 2.1/2.2(也许是 2.0?)隔离。选择在 Android 1.5/1.6 中运行良好。我什至创建了一个简单的页面,它只是将选择的显示样式从无更改为阻塞,并且选择仍然不能一致地打开。奇怪的是,有时在页面刷新后它可能会工作,然后在另一次刷新后它可能会再次损坏。正如你所说,焦点和点击/触摸事件确实从元素触发,所以我不知道问题是什么。
有时,如果我缩放页面,我可以打开选择,但即使这样,所选值也不会在页面上的选择元素中表示。
我向 Android 开发团队提交了一个错误报告,但即使它在未来的构建中得到修复,这个问题在 2.1/2.2 中仍然存在。
有人找到解决方法了吗?
//---- 更新 ------
如果您使用 webkit-transition 来显示/隐藏元素,将以下事件附加到元素似乎可以修复其中的选择:
.addEventListener("webkitTransitionEnd",function(e){ this.innerHTML = this.innerHTML; },错误的);
我不完全确定为什么会这样,但是出于某种原因,将元素重新写入 DOM 似乎有所帮助。在 Android 2.1/2.2 模拟器、EVO4G 和 MyTouch 中测试。
我在a.meservy的这个答案中找到了解决方案。下面是答案,抄下来方便大家。
在这种情况下,问题实际上是由 jQTouch 引起的。要修复它,只需在 jqtouch.css 中注释掉这 4 行
在“身体”下
/*-webkit-perspective: 800;*/
/*-webkit-transform-style: preserve-3d;*/
在“正文> *”下
/*-webkit-backface-visibility: hidden;*/
/*-webkit-transform: translate3d(0,0,0) rotate(0) scale(1);*/