0

现在我正在使用一个 webview 来显示我的 aplicationDatadirectory 中的数据,这里一切正常,当用户分别单击下一步时,我会得到内容。现在我正在做的是在 webview 的加载中,我在 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 和 move 呼叫。我不知道这里有什么问题。我在这里使用 url 在 webview 中设置数据。

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

任何人都可以找到问题所在吗?谢谢。

4

2 回答 2

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 来说可能很困难),那么您需要等待很短的时间,直到页面加载完毕。还有一个事件监听器(web view-event load),但我不能说这是否适用于本地资源,但我不这么认为。

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

html请注意,当您通过属性提供内容时,android 上存在一个问题,即您无法在 web 视图中使用本地图像(资源文件夹) 。

于 2013-04-04T09:28:26.207 回答
0

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

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

谢谢。

于 2013-04-15T05:47:52.650 回答