2013-05-03 2 views
0

크로스 브라우저 호환이 가능한 모바일 사이트를 만들고 있습니다. 하나의 기능에 대해서는 터치 이벤트의 위치를 ​​감지해야합니다.windows에서 자바 스크립트 mousedown 이벤트 위치

Windows Phone은 터치 시작 등을 지원하지 않으므로 대신 mousedown을 사용하고 있지만 이벤트에서 페이지 위치를 가져 오는 데 문제가 있습니다. 그것은 바탕 화면에 아무런 문제없이 작동하며 Windows phone에서 mousedown이 감지되지만 offsetX - offset Y를 얻는 방법을 알 수 없습니다.

Heres 데스크탑과 iphone 및 Android에서 작동하는 샘플 (내가 jQuery를 사용하고 있지만 플러그인 또는 아무것도 아닌 표준) : Touch/Gestures On Mobile Devices 또는이 : 나는 당신을보고 어떤에서 윈도우 폰 8, 9

+0

그냥'e.pageX'를 사용하지 않는 이유는이 터치 이벤트 또는 전화에 어떤 다른인지 모르겠지만 'e.pageY' -'originalEvent'를 다루지 않습니다. 나는 꽤 jQuery가 이벤트의 위치를 ​​정규화하여 이처럼 – Ian

+0

e.pageX e.pageY가 mousedown mouseup에서 잘 작동하지만 Windows phone mousemove는 mousedown과 똑같이 취급되고 있으므로 매우 응답 – Finglish

답변

0

에 검사를하지

$("div").on("touchstart mousedown", function(e){ 
    org_x = e.originalEvent.changedTouches[0].pageX ? e.originalEvent.changedTouches[0].pageX : e.originalEvent.offsetX; 
    alert(org_x); 

    org_y = e.originalEvent.changedTouches[0].pageY ? e.originalEvent.changedTouches[0].pageY : e.originalEvent.offsetY; 
    alert(org_y); 
}); 

이 글을 읽을 수 없습니다 이 스택 오버플로 질문보기 : Windows phone 8 touch support

임씨는 여전히 화살표를 찾고 있으며, 더 나은 솔루션으로 내 답변을 업데이트 할 것입니다.

+0

주셔서 감사합니다. – Finglish

+0

나는 MSPointerDown 등을 시험해 보았습니다. 그들은 불을 붙였습니다. 그러나 어떤 위치 속성도없는 것 같습니다. – Finglish

0

isues 너비 MSPonterDown 등 jquery 버그/incompatablility 것 같습니다. 순수 자바 스크립트로 이벤트 처리기를 설정하면 pageX 및 pageY 특성을 얻을 수 있습니다. jquery로 이벤트 처리기를 설정하면 pageX pageY가 없습니다.

document.getElementById("clickdiv").addEventListener("MSPointerDown",handleDown,false); 

function handleDown(evt) { 
    alert(evt.pageX); 
} 

$("#clickdivalt").on("MSPointerDown", handleAltDown); 

function handleAltDown(evt){ 
    alert(evt.pageX); 
} 
+0

evt.originalEvent.layerX가 정상적으로 작동합니다. 당신은 먼저 evt first.there 속성을 찾을 필요가 있습니다. originalEvent라는 속성을 볼 수있는 객체 내부의 속성을 볼 수 있습니다. layerX .thats 우리가 원하는 것. 우리는 layerX 대신에 clintX를 사용할 수도 있습니다. –

1

는 작동이 코드를 시도 미세

document.getElementById("clickdiv").addEventListener("MSPointerDown",handleDown,false); 

function handleDown(evt) { 
    alert(evt.originalEvent.layerX); 
} 

$("#clickdivalt").on("MSPointerDown", handleAltDown); 

function handleAltDown(evt){ 
    alert(evt.originalEvent.layerX); 
} 
+0

yup..it 잘 작동합니다. – LeNI