【问题标题】:PhoneGap touch events only firing once device has been rotatedPhoneGap 触摸事件仅在设备旋转后触发
【发布时间】:2013-02-12 19:12:03
【问题描述】:

使用带有 PG 2.2.0 的 PhoneGap 构建并在我的带有 Android 4.0.4 的 Galaxy S2 上进行测试

我已经找到了 touch events not working in android phonegap webview (or even built-in browser)Phonegap on Galaxy S3 ignores touch eventsWebView in ICS touch events not being fired properly 但我不确定它们是否描述了完全相同的问题。

我正在使用 Tap.js 和 iScroll。在我至少旋转设备一次之前,它们都不起作用(我无法滚动或使用我的应用程序菜单)。我可以将它旋转回我开始的地方,它仍然可以工作。似乎第一次旋转/方向更改会触发某种刷新,但我不知道应该如何处理。

也许有相同症状的人能够解决这个问题。谢谢。

编辑:我禁用了所有 JS 并将这段代码放入 deviceready

document.getElementById('app').addEventListener('touchstart', function() {
    alert('touchstart #app');
}, false);

而且我只有在至少一个orientationchange 之后才能得到alert

【问题讨论】:

    标签: javascript cordova touch


    【解决方案1】:

    在我拆开我的应用程序并创建一个测试用例后,我发现以下内容:将position:relative; 添加到htmlbodyoverflow:hidden; 组合似乎导致了问题。

    为了彻底解决我的问题,我采取了以下步骤:

    • 再次制作html和body static
    • 从 html 和正文中删除了 overflow:hidden;
    • 而是同时应用于#app(我的包装器div)
    • document 级别和preventDefault 上收听touchstart touchmove touchend

    2013 年 6 月 12 日更新,另一个重要发现:

    • 如果您为 touchstart 调用 preventDefault,则 touchmove 将不会触发

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多