Webview刷卡问题 - Appcelerator Titanium

时间:2013-04-02 12:40:24

标签: appcelerator-mobile

现在我正在使用一个webview来显示来自我的aplicationDatadirectory的数据,这里一切正常,当用户分别单击下一步时我会得到内容。现在我正在做的是webview的onload我在webview的html中注册了“touchevent”和“touchmove”,如下所示: -

$.webview.evalJS('document.getElementsByTagName("body")[0].addEventListener("touchstart", function mytouch(){Ti.App.fireEvent("touch", {X:event.touches[0].pageX,Y:event.touches[0].pageY,length:event.touches.length});}, false);'); 
$.webview.evalJS('document.getElementsByTagName("body")[0].addEventListener("touchmove", function mymove(){Ti.App.fireEvent("move", {X:event.touches[0].pageX,Y:event.touches[0].pageY,length:event.touches.length});}, false);');

在此基础上我找到了滑动事件。我在webview中得到了正确的html(我可以看到图像)。但我无法触及touchstart并转移电话。我不知道这里有什么问题。我在这里使用url在webview中设置数据。

现在当我使用html在webview中设置数据时(我在一个var中使用了我的html文件的数据(如下所示))现在我无法看到图像它只显示一个黑色边框(空)但是这里我的touchstart和touchmove事件正在解雇我的刷卡也按预期工作。我在iPhone中检查此功能。

任何人都可以在这里找到问题吗?感谢。

2 个答案:

答案 0 :(得分:1)

我认为这取决于您申请的时间

$.webview.evalJS('document.getElementsByTagName("body")[0].addEventListener("touchstart", function mytouch(){Ti.App.fireEvent("touch", {X:event.touches[0].pageX,Y:event.touches[0].pageY,length:event.touches.length});}, false);'); 
$.webview.evalJS('document.getElementsByTagName("body")[0].addEventListener("touchmove", function mymove(){Ti.App.fireEvent("move", {X:event.touches[0].pageX,Y:event.touches[0].pageY,length:event.touches.length});}, false);');

如果使用html属性,则会立即加载数据,您可以在设置html内容后准确使用该代码。如果你使用url(即使它位于本地,这对于android来说可能很困难),那么你需要等待很短的时间直到页面加载。还有一个事件监听器(网络视图事件load),但我不能说这是否适用于本地资源,但我不这么认为。

在这种情况下,您应该将javascript片段应用到您的html资源(如果它们是本地的),而不是使用evalJS手动添加它。

请注意,Android上存在一个问题,当您通过html媒体资源提供内容时,您无法在网页浏览中使用本地图片(资源文件夹)。

答案 1 :(得分:0)

我在iOS中滑动工作(在android中它正常工作)。 我没想到这件事是一个原因,但我不知道背后的逻辑。我从应用程序数据目录访问.xhtml文件,它在Android中没有任何问题,但在iOS中却没有。

我只是将(在我的代码中重命名).xhtml文件更改为.html,现在它正在运行。 :) 希望这可以帮助那些正在寻找相同的人(或仅仅是为了他的兴趣)

感谢。