문제

(바람직하게는) jQuery를 사용하여 절대 마우스 위치 / 좌표 (x 및 y)를 잡아야합니다. 이 튜토리얼 그러나 JavaScript 이벤트 이외의 경우. 고맙습니다.

도움이 되었습니까?

해결책

불가능합니다. 그러나 튜토리얼에서 동일한 접근 방식을 사용하여 위치를 글로벌 변수에 저장하고 이벤트 밖에서 읽을 수 있습니다.

이와 같이:

jQuery(document).ready(function(){
   $().mousemove(function(e){
      window.mouseXPos = e.pageX;
      window.mouseYPos = e.pageY;
   }); 
})

이제 사용할 수 있습니다 window.mouseXPos 그리고 window.mouseYPos 어디서나.

다른 팁

이것은 의견으로 시작되었습니다 Chetan Sastry의 대답, 그러나 나는 그것이 답으로 게시 할 가치가 있다는 것을 깨달았습니다.

나는 문서 수준, 항상 실행되는 것에주의를 기울일 것입니다 mousemove 커서 포지션에 대한 여론 조사 만해도 이벤트. 이것은 많은 처리이며 모든 브라우저, 특히 IE와 같은 느린 브라우저를 습격 할 수 있습니다.

이와 같은 문제는 거의 확실히 설계 결정의 문제를 제기합니다. 커서 위치를위한 여론 조사를 위해 마우스 이벤트를 처리 할 필요가 없다면 실제로 커서 위치가 필요합니까? 해결하려는 문제를 해결하는 더 좋은 방법이 있습니까?

편집 : Safari 4에서도 (과소 평가) 매우 빠릅니다, 그 싱글 mousemove 이벤트는 튜토리얼 페이지와의 모든 상호 작용을 눈에 띄게 고르지 않습니다. 그것이 사이트 또는 응용 프로그램에 대한 사용자의 인식에 어떤 영향을 미치는지 생각해보십시오.

이 기능은 마우스 위치를 간격으로 만 가져와 UI 성능에 미치는 영향을 줄입니다.

function getMousePosition(timeoutMilliSeconds) {
    // "one" attaches the handler to the event and removes it after it has executed once 
    $(document).one("mousemove", function (event) {
        window.mouseXPos = event.pageX;
        window.mouseYPos = event.pageY;
        // set a timeout so the handler will be attached again after a little while
        setTimeout(function() { getMousePosition(timeoutMilliSeconds) }, timeoutMilliseconds);
    });
}

// start storing the mouse position every 100 milliseconds
getMousePosition(100);

다른 대답에서와 마찬가지로 "이제 사용할 수 있습니다. window.mouseXPos 그리고 window.mouseYPos 어디서나. "

마우스 이동이 간격 동안 감지되지 않으므로 약간의 정확도를 잃습니다.

@chetan sastry의 소울 슈션을 시도했지만 작동하지 않습니다. (jQuery 1.6.4를 사용하고 있습니다). 코드를 변경 한 다음 지금 작동합니다. 여기 내 코드가 있습니다. 이것이 도움이되기를 바랍니다.



    $(document).ready(function(){
       $(document).mousemove(function(e){
          window.mouseXPos = e.pageX;
          window.mouseYPos = e.pageY;
       }); 
    });

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top