2010-04-28 3 views
1

브라우저에서 마우스 움직임을 추적하려고하는데 사용자가 마우스를 0.5 초 동안 정지 시키면 코드가 실행됩니다. 아래 코드에서 파이어 버그 (firebug)에 중단 점을 넣었습니다. var mousestop = function (evt) 행에서 중단되었지만 return 문으로 점프합니다. 나는 간단한 것을 놓치고 있습니까? POST 문을 실행하지 않는 이유는 무엇입니까? 비슷한 방식으로 마우스 클릭을 추적하고 있으며 서버에 잘 게시됩니다. 마우스가 멈추지 않는 것.Tracking Mouse Stop

답변

2

mousestop이 실행될 때까지 정의되지 않았습니까?

하면이처럼보십시오 :

(new Image).src = "/heat-save.php?x=" + evt.pageX + "&y=" + evt.pageY + "&click=false&w=" + window.innerWidth + "&h=" + window.innerHeight + "&l=" + escape(document.location.pathname; 
:

// a closure for good measure... 
(function($){ 
    var mousestop = function(evt){ 
      // I would use GET because POST makes 2 round trips 
      $.get("/heat-save.php", { 
       "x":evt.pageX, 
       "y":evt.pageY, 
       "click":false, 
       "w":window.innerWidth, 
       "h":window.innerHeight, 
       "l":escape(document.location.pathname) 
      }); 
     }, 
     thread = null; 
    $.fn.saveStops = function() { 
     return this.bind("mousemove.clickmap", function(evt) { 
      clearTimeout(thread); 
      thread = setTimeout(function(){mousestop(evt);}, 500); 
     }); 
    }; 
}(jQuery)); 

당신은 이벤트가이 같은 뭔가 아약스 호출을 대체 할 수

 return function() { 
     clearTimeout(thread); 
     thread = setTimeout(function(){mousestop(evt);}, 500); 
     }; 
여기

내가 리팩토링 얼마나입니다

POST vs GET

또한 서버가 가장 빠른 응답을 위해 200 대신에 "204 No Content"상태 코드를 보내야합니다.

+0

답장을 보내 주셔서 감사합니다. 반환 함수를 변경했지만 여전히 POSTing이 아닌 동일한 동작을 보여줍니다. 그냥 편집 한 것을 보았습니다. 나는 이것을 시도 할 것이다. – Nathan

+0

우수! 이것은 더 잘 작동했습니다. 고맙다! (단 14 개의 평판 밖에 없다. 그렇지 않으면 나도 너에게 투표 할 것이다. \) – Nathan

+0

아니 그게 다예요. 웹 사이트의 나머지 부분을 점검 하겠지만 히트 맵을 만들려고하는 것은 아닙니다. 이것은 – Nathan