2013-04-02 67 views
0

現在我正在使用一個webview來顯示我的aplicationDatadirectory中的數據,這裏一切工作正常,當用戶點擊下一個返回時,我得到內容。現在我在做什麼是web視圖中的onload我登記的WebView HTML這樣「的TouchEvent」和「touchmove」: -Webview滑動問題 - Appcelerator Titanium

$.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(我可以看到圖像)。但我無法得到觸動和移動電話。我不知道這裏有什麼問題。我在這裏使用網址在webview中設置數據。

現在,當我在webview中使用html設置數據(我在一個var中使用了我的html文件的數據(下面給出))現在我無法看到圖像,它只是顯示一個黑色邊框(空的),但在這裏我的touchstart touchmove事件也在觸發,我的刷卡也在按預期工作。我正在iPhone中檢查這個功能。

任何人都可以找到問題這裏發生了什麼問題嗎?謝謝。

+0

編輯: - 當使用webview.html我複製圖像資源文件夾,然後檢查和刷卡正在工作(這黑色的空白邊框是爲了沒有得到我認爲的圖像)。但是,當我使用webview.url它不工作。有什麼建議麼? –

回答

0

我做了它在iOS中的刷卡工作(在Android它工作)。 我沒想到這件事是一個原因,但我不知道它背後的邏輯。我從應用程序數據目錄訪問.xhtml文件,它在android中沒有任何問題,但在iOS中沒有任何問題。

我只是將(在我的代碼中重命名).xhtml文件更改爲.html,現在它正在工作。 :) 希望這可以幫助誰正在尋找相同的人(或只是爲了他的利益)

謝謝。

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手動添加它。

請注意,在您通過html屬性提供內容時,您無法在您的網絡視圖中使用本地圖像(資源文件夾)。

+0

嗨嗚,對不起,最近的回覆,並感謝您的評論, 我寫負載方法webview.evalJS(如上所述),所以我可以確保數據加載(所以我認爲如果數據加載或不)現在,當我使用webview.html(同一個html)時,我可以滑動我的webview(touchstart和touchmove事件被調用),但如果我使用webview.url而不是webview.html,則不會觸發這些事件。還請注意,這只是在Android的iOS的情況下,我可以刷我的webview :)。有什麼建議麼? –

+0

我無法控制這些文件,因此我無法手動將這些事件放入html文件中。我解壓縮一個文件(epub文件),然後將html文件保存在applicationdatadirectory中,然後逐個訪問這些文件。 –

+0

良好的加載意味着數據可用並不意味着該網站已經呈現。所以,也許你應該把這部分放在你的evalJS內的jQuery的'$(document).ready'包裝中...... –

相關問題