2009-03-17 3 views
4

웹 페이지의 언로드 기능에서 URL을 호출하려고하지만 언로드 기능에서 get 요청이 작동하지 않습니다. 내 코드는 다음과 같습니다.브라우저 창 닫기 전에 URL 호출

$(window).unload(function() { 
    jQuery.get("someurl") 
}); 

일부 사용자 작업 로깅에 대해 알리고 싶습니다. 어떻게 든 가능할까요?

jQuery.get() 다음에 경고()를 추가하면 Get-Request에 시간이 충분히 걸리지 만 이것이 우리가 선호하는 것이 아닙니다.

답변

14

사용 : -

jQuery.ajax({url:"someurl", async:false}) 
2

당신은 직접입니다 onbeforeunload 이벤트를 사용해야합니다. 이 경우 아약스 호출을 시작할 수 있습니다. 이것은 jQuery가 실제로 도움이되지 않는 곳입니다. 몇 노트 :

이입니다 onbeforeunload 이벤트에서 아무것도 반환하지 마십시오 브라우저가 표시됩니다 당신이 AJAX 호출 동기화를 할 경우 사용자

에 팝업을 "당신은이 페이지에서 벗어나시겠습니까" 실행 중일 때 페이지가 언로드됩니다. 비동기로 설정하면 호출이 실행되는 동안 페이지가 변경됩니다 (호출에 대한 자바 스크립트 이벤트 핸들러 만있을 수 없음). jQuery는 이벤트 핸들러를 연결하기 때문에 여기서는 아약스 지원이 유용하지 않습니다.

window.onbeforeunload = function() { 
    var URL = 'someplace'; 
    var request = null; 

    if (window.XMLHttpRequest){ 
     request = new XMLHttpRequest(); 
    } else if (window.ActiveXObject) { 
     request = new ActiveXObject("Microsoft.XMLHTTP"); 
    } 

    if (request) { 
     request.open("GET", URL, false); 
     request.send(); 
    } 
} 
+1

onBeforeUnload 이벤트는 표준이 아니므로 사용해서는 안됩니다. 예를 들어 Opera는이를 지원하지 않습니다. – James