5

我在移动网站上的表单中有一系列选择元素。这些选择元素位于通过 JS 和 CSS3 转换处理的滚动窗格内,因此首先要在选择上注册触摸/单击/任何事件就已经足够痛苦了。但是,我现在发现,仅在 android 上,即使选择被点击,并且正在获得焦点 - 他们只是拒绝打开。我 100% 确定选择正在获得他们的焦点事件(通过调试),所以老实说,我完全被难住了。没有调试,选择上没有其他焦点/模糊事件。它在 iPhone 上运行良好......有什么想法吗?

4

2 回答 2

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 中测试。

于 2010-11-03T22:49:12.440 回答
0

我在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);*/
于 2011-05-25T18:02:13.127 回答