2013-04-04 1 views
0

Цель платформы - Android 4.0 и выше.Как получить координаты касания в среде android + phonegap?

Окружающая среда - html5 + css3 + JavaScript с использованием PhoneGap

В мое приложение под выше среде, я хочу всплывающее меню, которое не что иное, как <div>, появляются ровно несколько пикселей выше верхней кнопка, когда пользователь прикасается к нему , До сих пор я разработал это:

<head> 
<script type="text/javascript" charset="utf-8"> 

     var touchme=document.getElementById('#button'); 
     function onDeviceReady(){ 

        touchme.addEventListener('touchstart',onNav, false); 
     } 
     function onNav() { 

       popup=document.querySelector("#divPop"); 
       popup.style.display="block"; //this will make a popup appear 
       touchme.getBoundingClientRect(); 
       navigator.notification.alert(touchme.top); 
     } 
</script> 
</head> 

Теперь проблема в том, что даже предупреждение не появляется. Итак, как мне получить координаты кнопки?

ответ

3

Прежде всего, попробуйте этот код после загрузки DOM - ваш скрипт находится в теге <head>, и вы пытаетесь получить доступ к элементу #button упреждающим образом.

var touchme = null; 
function onDeviceReady(){ 
    touchme = document.getElementById('#button'); 
    touchme.addEventListener('touchstart',onNav, false); 
} 

window.addEventListener("DOMContentLoaded", onDeviceReady, false); 

, как для координат, взглянуть на свойства ScreenX и Screeny мероприятия (который, передаваемых в onNav). Свойства, которые нужно искать, по существу идентичны свойствам обычного щелчка мыши.

function onNav(e) { 
    alert(e.screenX + ' ' + e.screenY); 
} 
+0

Но я называю onDeviceReady функция() из OnLoad(), который вызывается <тела OnLoad = "OnLoad()"> ли это так же, как window.addEventListener ("DOMContentLoaded", onDeviceReady, ложь); ? –

+1

Это похоже (см. Http://stackoverflow.com/questions/2414750/difference-between-domcontentloaded-and-load-events) - событие onload для тела также будет работать. Проблема заключается в том, что 'var touchme = document.getElementById ('# button');' выполняется до загрузки #button. Поэтому переместите эту строку в функцию onDeviceReady, и вы должны быть хорошими. – psychobunny

+0

эй большое спасибо. 90% хорошо, но e.screenX ничего не показывал. Я уже после этого. –

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