2013-04-02 2 views
0

Прямо сейчас я использую один веб-просмотр, чтобы отображать данные из моего aplicationDatadirectory, здесь все работает нормально, я получаю контент, когда пользователь нажимает следующий ответ соответственно. Теперь то, что я делаю в OnLoad из WebView зарегистрировать «TouchEvent» и «TouchMove» в HTML WebView как это: -Webview Swipe issue - 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);'); 

на основании этого я нахожу событие салфетки. Я получаю правильный html в webview (я вижу изображения). Но я не могу получить touchstart и перезвонить. Я не знаю, в чем проблема. Я установил данные в webview, используя url здесь.

Теперь, когда я устанавливал данные в webview с помощью html (я использовал данные своего html-файла (приведенного ниже) в одном var), теперь я не могу видеть изображения, это просто показывает мне одну черную границу (пусто), но вот мой 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

Hi Woo, извините за поздний ответ и спасибо за ваш комментарий, Я пишу webview.evalJS в режиме загрузки (как я уже упоминал выше), поэтому могу быть уверен, что данные загружены (поэтому я думаю, что если данные загружены или нет теперь недоступен.) Теперь, когда я использую webview.html (тот же html), я могу использовать мой веб-просмотр (вызываются события touchstart и touchmove), но если я использую webview.url вместо webview.html, эти события не запускаются. Просьба также отметить, что это касается только iOS в android. Я могу пронести мой веб-обзор :). Какие-либо предложения? –

+0

У меня нет контроля над этими файлами, поэтому я не могу вручную помещать эти события в html-файлы. Я разархивирую один файл (epub-файл), а затем сохраняю html-файлы в каталоге applicationdatadirect и затем один за другим обращаюсь к этим файлам. –

+0

Загрузка скважины означает, что данные доступны, это не означает, что сайт предоставил. Так что, возможно, вы должны поместить часть в свой evalJS в '$ (document) .ready' wrapper jQuery ... –

Смежные вопросы