2012-05-19 9 views
2

이 코드는 마우스 움직임 좌표를 배열에 저장하며 beforebeforeunload를 게시해야합니다. 하지만 게시하지 않습니다. 내가Ajax 게시 onbeforeunload가 작동하지 않습니다.

이름을 변경하는 경우 : "blabla"작동

:

이름을 이동합니다. 문제가 "이동"변수에 있음을 의미합니다. 어떻게 작동시킬 수 있습니까?

$(document).ready(function(){ 


var moves = []; 

$("html").mousemove(function(e){ 
moves.push(e.pageX + "x" + e.pageY) 
}); 


window.onbeforeunload = function() { 

$.ajax({ 

     type: "POST", 
     url: "mailyaz.php", 
     data: { 
     name: moves; 
     } 
     }); 

}); 

}); 
+8

당신의 비동기 물건을 포함하는 서버 측라는 server.php에서 페이지가 필요합니다 클라이언트 측에서

이를 넣어 그것은 버기가 될 것이다. 함수가 완료 될 때까지 기다리기 위해'async : false'를 설정하십시오. 서버로 전달되는 것을 확인하는 유일한 방법입니다. 그렇지 않으면 일부 브라우저에서 문제가 발생할 것이고 항상 통과하지는 않습니다. – adeneo

+0

잘 모르겠지만 마우스 움직임의 몇 초 후에 거대한 크기가 될 작은 문자열과 함께 작동하는 이유는이 [FIDDLE] (http : //jsfiddle.net/gAsKb/) – adeneo

+0

문제가 아마도 "움직임"에 있다는 것을 알았습니다. 그것을 저장하지 않습니다. – user198989

답변

2

이 작업을 시도 할 수 있습니다. 몇 달 전에 개발 한 예입니다. 이 경우 좌표는 텍스트 파일에 저장되지만 이것을 INSERT로 대체 할 수 있습니다. ,

var moves = ""; //Now an String to store the Coords 

    $(document).ready(function(){ 
     //When you moves the mouse inside the Page then 
     //concat the Coords into the String var and add a Line-Brak at the end 
     $("html").mousemove(function(e){ 
      moves += (e.pageX + " x " + e.pageY + "\n"); 

     }); 

     //Here the magic happen: bind a function to onbeforeunload event that POST 
     //the String to the server 
     $(window).bind('beforeunload', function() { 

      $.post("server.php",{name:moves}); 

     }); 

    }); 

지금 페이지를 종료/다시로드하는 동안

//Capture the String 
    $cursorMoves = ($_POST['name']); 

    $myFile = "testFile.txt"; 
    $fh = fopen($myFile, 'w'); 
    fwrite($fh, $cursorMoves); 
    fclose($fh); 
+0

작동하지 않습니다. : S – user198989

+1

@ user198989 Chrome 18.0.1025.162 및 Firefox 12에서 테스트하여 훌륭하게 작동합니다. 이메일을 보내 주시면 전체 프로젝트를 보내드릴 수 있습니다. –

+0

아, 나는 if ($ _ POST [name]) { }과 같이 if 문을 사용하여 제거했다고 생각했습니다. – user198989

1

onbeforeunload은 문자열을 반환해야합니다. 그러나 ajax 요청은 표시되는 대화 상자에 의해 차단됩니다. 사용자가 페이지를 승인하고 떠날 경우 요청이 중단 될 수 있습니다.

https://developer.mozilla.org/en/DOM/window.onbeforeunload

http://jsfiddle.net/sVU7K/1

+0

작업 버전에서 아무것도 반환하지 않습니다. – Andreas

+0

실수로 mootools가 lib로 설정되었습니다. 이 버전에서 수정되었습니다. 'dialog'를 취소하면 콘솔에 반환 된 요청이 표시됩니다. – Trevor

+0

언로드 전에 아무 문제가 없습니다. 내가 말했듯이, 변수를 "blabla"로 변경하면 작동합니다. – user198989

관련 문제