2013-12-23 4 views
0

jQuery 또는 javascript로 페이지를 새로 고치거나 닫았는지 확인하고 싶습니다.페이지 새로 고침을 확인하거나 jQuery/javascript로 닫으십시오.

현재 사용자가 페이지를 탐색하거나 페이지를 새로 고치면 삭제할 데이터베이스 값이 있습니다.

값을 삭제하기 위해 AJAX 호출을 사용하고 있습니다.

는 지금, 나는 다음과 같은 코드가 있습니다 :

핸들러 :

window.beforeunload = cleanUp; 

cleanUp() 방법 :

function cleanUp() { 
    // Check to see if it's an actual page change. 
    if(myActualLeave) { 
     $.ajax({ 
      type: "POST", 
      url: "/api/cleanup", 
      data: { id: myLocalId }, 
      success: function (data) { 
       console.log(myLocalId + " got removed from the database."); 
      } 
     }); 
    } 

    // Reset the flag, so it can be checked again. 
    myActualLeave = true; 
} 

myActualLeave 내가 AJAX 때 false로 설정된 플래그가 전화가 걸려서 beforeunload 처리기를 트리거하지 않습니다.

내가 겪고있는 문제는 페이지의 링크를 클릭하면 예를 들어 Google에 대한 링크 인 경우 window.beforeunload이 실행되지 않는다는 것입니다. 나는 이것에 대한 오해가있을 수 있지만 jQuery의 $(window).unload(...);onbeforeunload 트리거를 사용해 보았습니다.

내가 자바 스크립트 전화를 걸 때 사용한다 무엇

:

  1. 사용자가 페이지를 새로 고침,
  2. 사용자가 페이지에서 멀리 탐색, 또는
  3. 사용자가 페이지를 닫을 때
  4. ?

편집 : 그것은 내가 멀리 이동 감지하는 click() jQuery를 핸들러를 사용할 수있는 코멘트에 와서. 더 구체적으로 말하면 사용자가 링크를 클릭했을 때만 나는 그것을 proc하고 싶지는 않습니다. 어떤 식 으로든 페이지를 바꿀 때 작동 시키길 원합니다. 예를 들어 주소 표시 줄에 입력하면

+0

'$ ('a ') .Click()'에서 함수를 호출 할 수 있습니다. 또는 모든 외부 링크에 클래스를 추가하고 해당 클래스에 대해 호출 할 수 있습니다. 내 하중이 새로 고침과 닫힘에서 작동 할 것이라고 생각 했나요? – Leeish

+0

내가 포함하지 않았으므로이 질문을 포함하도록 내 질문을 편집 하겠지만, 멀리 탐색한다고 말했을 때 링크 만있는 것은 아닙니다. 사용자가 주소 표시 줄에 무언가를 입력하는 경우처럼. –

+1

나는 이것을 사용하는 페이지가있다 :'window.onbeforeunload' 그리고 나는 방금 체크했다. URL을 입력하거나, 뒤로를 클릭하거나, 닫거나, 링크를 클릭 할 때 나에게 묻는다. 그것은 귀하의 모든 요구 사항 하에서 해고되었습니다. – Leeish

답변

1

당신은 "onbeforeunload"시도해야합니다 :

window.onbeforeunload 

을하지만 난 당신이 콜백 함수에서 "활성"(아약스 호출) 코드를 넣지 수 있다고 생각합니다. 그래서 당신은 @로해야

는 당신에게 당신이 때문에 종료 하시겠습니까 ...

: 당신이 할 수있는 모든 같은 떠나기 전에 사용자에게 표시됩니다 확인 모달 창을 정의하는 Leeish는 다음과 같이 말했다. 링크의 .on ('클릭')에 코드를 삽입하여 다른 페이지로 보내기 전에 ajax 호출을 시작할 수 있습니다.

"새로 고침"또는 "닫기"시나리오의 경우 데이터베이스 행을 "초안"(또는 기타)으로 표시 할 수 있으며 다음 페이지에 저장되지 않은 경우 초안 라인을 삭제할 수 있습니다.

+0

방금 ​​시도했는데 효과가있었습니다. 나는 그 페이지에서'alert' 팝업을 보는 것에 의존하고 있었다고 생각합니다. 감사합니다. @Leeish에 감사드립니다. 초안 부분에 대해서는 살펴볼 것입니다. 그것이 데이터베이스에 내장 될 수 있을까요? 또는 내 웹 프레임 워크? web.py를 백엔드로 사용하고 있습니다. –

+0

필요에 따라 다릅니다. 세션에 임시 값을 저장하거나 더 복잡한 경우 데이터베이스에 임시 값을 저장할 수 있습니다. – CtrlX

관련 문제