2014-07-10 3 views
1

내가 여기에 오해 한 것이 있습니까? 나는 종종 나도 바탕 화면 및 iPad 장치에 대해 작업 할 내 사이트에 다음과 같은 코드를 사용마우스 이벤트가 여전히 preventDefault로 설정된 경우에도 터치 이벤트에 발생했습니다

$("#someElement") 
    .on("mousemove", function(e) {   
     alert ("I am still here"); 
     // undesired code for ipad here 
    }) 
    .on("touchmove", function(e) { 
     e.preventDefault(); 
     // only desired code for ipad use here 
    }); 

내가 e.preventDefault가 부착 된 마우스 이벤트를 죽일해야합니다 여러 곳에서 읽습니다. 그리고 터치 이벤트는 처음부터 정교합니다. 그러나 나는 이제 경고가 내 ipad에서 여전히 발생 함을인지했다. 왜? 그 어떤 힌트라도? 미리 감사드립니다!

EDIT : 'touchmove'대신 'touchstart'를 입력하면 e.preventDefault()가 예측 된 방식으로 작동한다는 것을 알았습니다. 어서, 어떤 아이디어들! 더 간단한 코드에 대한 ipad.simply 사용 trenary 운영자에 대한 사용자 에이전트와

+0

봐 시도 코드 –

+0

고맙습니다! 나는 그것을 명심 할 것이다. 시원하게 보인다. 하지만 여전히 : 내 생각은 e.preventDefault()가 잘못 되었나요? 단지 더 깊은 이해를 위해서. – Garavani

답변

1

확인

var isIPad = navigator.userAgent.match(/iPad/i) != null; 

$("#someElement").on(((isIPad)? "touchmove" : "mousemove"), 
         ((isIPad)? gotoIpad : gotoOthers)); 

function gotoIpad() { 

     alert("I am ipad"); 
} 

function gotoOthers() { 

     alert("I am not ipad"); 
} 
+0

이것은 생각이지만 마우스 이벤트 대신 항상 원래의 터치 이벤트를 사용하고 싶습니다. 위의 코드는 내 코드를 전체적으로 더 간단하게 유지합니다. – Garavani

+0

sudharsan, 함수의 참조는 문자열이 아니어야합니다 .. 나는 방금 편집했습니다 .. –

+0

죄송합니다. 내 대답을 잘못 대답했습니다 : 고맙습니다! 나는 그것을 명심 할 것이다. 시원하게 보인다. 하지만 여전히 : 내 생각은 e.preventDefault()가 잘못 되었나요? 단지 더 깊은 이해를 위해서. – Garavani

0

유용 당신이 간단하게 할 수 있습니다이 사용자 에이전트에게 내 대답에

var isTouch = /iPad/i.test(navigator.userAgent); 

      if(isTouch){ 
      $("#someElement").on("touchmove", function(e) { 
         // only desired code for ipad use here 
       }); 
      } 
    else{ 
      $("#someElement") 
       .on("mousemove", function(e) {   
        alert ("I am still here"); 
        // undesired code for ipad 
       }); 
      } 
+0

고마워요. 승인. 그래서 당신은 실제로 e.preventDefault() 동작을 오해했다고 말합니까? 그리고 나는 함께 가야만 하는가? :-( – Garavani

+0

그리고 나는 또한 사용자 에이전트 솔루션이 (더 많은 미래에) 가장 좋은 솔루션이 아니며 (마우스와 터치 감도가있는) 장치가있을 것이라고 읽었다. – Garavani

+0

브라우저 탐지는 수년 이래로 나쁜 생각이다 https://www.quirksmode.org/js/detect.html – Holger