2009-04-10 4 views
5

사용자가 다시로드 할 때 발생하는 이벤트 처리기를 원합니다. onrefresh 또는 onreload가 올바른 처리기를 추가합니까? 또한, 이것은 onunload 전후에 심지어 발사 될 것인가? 브라우저 불일치가 있습니까? 감사.자바 스크립트 : onrefresh 또는 onreload?

답변

5

이벤트가 onrefresh 또는 onreload라고 생각하지 않습니다. 페이지가 언로드되는 시점을 알 수 있지만 이유 (즉, 사용자가 다음에 갈 위치)가 JavaScript의 보안 샌드 박스 외부에 있는지를 알 수 있습니다. 페이지가 다시로드되었는지 여부를 확인하는 유일한 방법은 사용자가 마지막 페이지 요청에 있었던 위치를 알아야하며 이는 JavaScript 범위 밖에 있습니다. document.referrer을 통해 가끔 가져올 수 있지만 브라우저의 보안 설정을 사용하여 해당 정보에 대한 액세스를 허용합니다.

+0

지금까지 내가 말할 수 : 모든 WIN7 – Thomaschaaf

0

내가 알고있는 onreload 또는 onrefresh 이벤트가 없습니다. 확실히 브라우저에서 실행되는 자바 스크립트에서 이것은 거의 의미가 없습니다. 기존 창과 모든 내용은 효과적으로 삭제됩니다. 따라서 기존 컨텍스트의 onload 또는 다시로드 한 결과로 생성 된 새 컨텍스트의 load 이벤트를 사용해야합니다.

2

특정 페이지에 대한 쿠키 설정과 onload 이벤트 확인을 결합하면 존재하지 않는 이벤트를 시뮬레이트 할 수 있습니다. 초기로드가 특정 시간 간격 인 경우에만 재로드가 계산되도록 쿠키 만료를 조정할 수 있습니다.

0

나는 artlung이 실제로 방법을 발견했다고 믿지만, 실제로 ... 그의 버전은 쿠키에 의존하고 있으며, 여러 가지 방법으로 사용이 차단 될 수 있습니다. 그 해결책은 선택한 서버 측 언어를 사용하여 페이지가 unload 일 때의 타임 스탬프를 저장하는 것입니다 (여전히 취약성이 있습니다. 예,하지만 다른 아이디어를 던지지 않는 이유는 무엇입니까?) 그런 다음 모든 페이지로드시 다시 테스트합니다. 몇 초 미만의 차이를 발견하면 사용자가 방금 페이지를 새로 고침했을 것입니다. :)

0

은 세션을 사용할 수 있습니다. 쿠키보다 쉽고 만료 또는 데이터베이스에 대해 걱정할 필요가 없습니다. 처음 페이지를 제외한 모든 페이지에서 귀하를 안내합니다. 나는 세션 superglobal이 두 번째 페이지까지 사용할 수 있다고 생각하지 않습니다. 그게 문제라면, 세션을 시작하고 활성 세션이없는 경우 즉시 페이지를 다시로드 할 수 있습니다.

0

WindowEventHandlers.onbeforeunload 이벤트 처리기 속성에는 beforeunload를 보낼 때 실행되는 코드가 들어 있습니다. 이 이벤트는 윈도우가 리소스를 언로드하려고 할 때 발생합니다.

window.onbeforeunload = function() { 
    return 'Are you sure you want to leave?'; 
} 

그러면 사용자가 함수에서 반환 한 메시지와 함께 사용자에게 확인 대화 상자가 표시됩니다. 사용자에게이 페이지 또는 취소 옵션을 남겨 둘 수 있습니다.

악의적 인 이유로 사용될 수 있으므로 확인을위한 방법이 없습니다.

https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onbeforeunload

+0

개선 것 코드에 대한 약간의 설명을 테스트 FF 3 크롬이 작동하지 않습니다 IE 8 사파리 4 작동 당신의 과감히 대답하십시오. –

관련 문제