2014-11-24 2 views
0

통신용 웹 소켓 연결을 사용하고 있습니다. 그러나 사용자 새로 고침 페이지,이 웹 소켓 연결을 닫고 싶습니다. 또한 window.onbeforeunload 이벤트를 사용하여 사용자 정의 text.IF 사용자가 확인 상자를 표시합니다. 사용자가 'do not reload'옵션을 선택하고 아무런 동작이 없음 (잘 작동 함) 사용자가 reload 옵션을 선택하면 웹 소켓 연결을 닫으려고합니다. . 나는 이걸 어떻게 달성 해야할지 몰랐다. window.unload를 호출하여 웹 소켓 연결을 닫으려고했으나 작동하지 않습니다 .Mu 코드는 다음과 같습니다.window.unload 호출 방법

window.onbeforeunload = function(e) { 
    return "you are closing this web page'; 
}; 


window.unload = function(e) { 
    webSockect.closeConnection(); 
}; 

이 방법을 알려주십시오.

답변

0

창 이벤트 앞에는 on이 붙습니다.

window.onunload = ... 또는

window.addEventListener('unload', ...) 더 나은를 사용해보십시오.

addEventListener을 사용하는 경우 on 접두사없이 이벤트 이름을 지정하십시오.

더 읽기 : 모든 WindowEventHandlers.onunload

0

첫째, 위의 코드에 구문 오류가, 당신이 쓴 :

window.onbeforeunload = function(e) { 
    return "you are closing this web page'; 
}; 

그래서, 따옴표의 유형이 단일 또는 이중 하나가 있어야한다, 문자열의 시작과 끝에서 동일합니다.

이 있어야하는데, 그것은 작동합니다

위로 점

window.onbeforeunload = function(e) { 
    return "you are closing this web page"; 
}; 

====. 언로드 프롬프트로 수행 할 수있는 작업은 메시지를 변경하는 것입니다.

  • 심지어 상자

Q.의 UI를 변경 프롬프트

  • 의 버튼 텍스트를 변경 프롬프트
  • 에 버튼에 동작을 변경 : 이런 건 그렇지 않으면 작동하지 않습니다 기능이 인 경우 return 앞에 글을 쓰면 브라우저에서 무시됩니다.

  • +1

    모든 브라우저에서 Window.unload 함수가 지원되지 않으므로 onBeforeUnload 함수가 더 좋습니다. 또한이 기능이 트리거 될 때 이벤트 목록을 찾을 수 있습니다 : [OnBeforeUnload - 이벤트 목록] (http://stackoverflow.com/questions/138411/catching-a-tab-close-event-in-web-browser) – Rajesh

    0

    변수에 메서드를 할당 한 다음 변수를 반환하면 실제로 닫을 때 메서드를 실행할 수 있습니다.

    function unloadWebSocket() 
    { 
        webSockect.closeConnection(); 
    } 
    
    window.onbeforeunload = function(e) 
    { 
        var x = unloadWebSocket(); 
        return x; 
    }; 
    

    웹 소켓에 대한 경험이 없지만 동기식 아약스 요청이 작동한다는 것을 알고 있습니다.