来自Android浏览器的Dashcode移动项目的触摸事件不正确

时间:2010-07-16 13:52:36

标签: javascript android dashcode

我正在使用Dashcode开发HTML / Javascript移动Web应用程序。通常情况下,我不会使用这种所见即所得的东西,但我发现它是一个非常快速的开发过程。

不幸的是,我现在无法在Android的浏览器上运行它。主显示加载和所有正确的数据都是从Web服务中提取的,但您无法按任何内容来激活它。

我怀疑android浏览器正在发送不同的javascript事件,Dashcode对象没有配置为接收。

此外,adb logcat调试器拒绝从模拟器上的浏览器输出任何日志消息,因此我很难将其排序。

所以我的问题是:有人可以帮我找出我需要注意的事件,所以我可以遍历所有触摸处理程序并复制它们以用于安卓事件,或者在这种情况下以任何其他方式提供帮助?

3 个答案:

答案 0 :(得分:1)

我的Dashcode应用程序也遇到了同样的问题。 另一方面,我的jqTouch应用程序在Android浏览器上完美运行 - 与iPhone(Mobile Safari)完全相同。

这让我想知道: jqTouch如何注册点击/点击/任何用户事件与Dashcode不同? 如果有人可以回答这个问题,我们可能会解决问题的一半...

答案 1 :(得分:1)

至少,onClick事件我遇到过类似的问题。尝试从deploy文件夹中删除所有数据。我还使用内联样式来触发'onclick'方法,如下所示:

                <div id="subscribeSubscriptionBtn" apple-part="com.apple.Dashcode.part.pushbutton" class="apple-no-children button" onclick="btnHandler(event);"></div>

这适用于iPhone和Android 2.1设备(预安装的浏览器和FF)。希望有所帮助...

答案 2 :(得分:0)

我只是在努力解决这个问题认为我已将它排序。

问题在于Dashcode javascript框架的浏览器嗅探。

Parts/core/core/base.js,第47行:

MobileSafari: !!navigator.userAgent.match(/Apple.*Mobile.*Safari/)

Parts/core/views/Page.js,第581行:

if (!DC.Browser.MobileSafari)
{
      document.addEventListener('click', wrapEventHandler("_onclick"), false);
      document.addEventListener('dblclick', wrapEventHandler("_ondblclick"), false);
}

Dashcode错误地将Android浏览器识别为Mobile Safari,因为它的用户代理类似于:Mozilla/5.0 (Linux; U; Android 2.2; en-us; Nexus One Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1

结果是Dashcode无法附加其click和dblclick事件侦听器。

Parts/core/core/base.js的第47行更改为此修复它:

MobileSafari: !!navigator.userAgent.match(/Apple.*Mobile.*Safari/) && !!!navigator.userAgent.match(/Android/)