Firefox에서 뒤로 버튼을 사용하여 이전에 방문한 페이지로 이동하면 해당 페이지의 스크립트가 다시 실행되지 않습니다.
정확하고 좋은 일입니다.
Firefox (및 Safari 및 Opera)에서 링크를 누르면 다음 페이지로 이동하기 위해 페이지가 즉시 파괴되지 않습니다. 페이지를 그대로 유지하고보기에서 숨길뿐입니다. 뒤로 버튼을 누르면 문서를 다시로드하지 않고도 이전 페이지를 다시 볼 수 있습니다. 이것은 훨씬 더 빠르므로 사용자에게 더 부드러운 뒤로 / 앞으로 페이지 전환이 가능합니다.
이 기능을 bfcache 라고합니다 .
사용자가 이전에로드하고 사용하는 동안 페이지에 추가 한 모든 콘텐츠는 그대로 유지됩니다. 페이지 요소에 연결 한 모든 이벤트 처리기는 계속 연결됩니다. 설정 한 시간 제한 / 간격은 계속 활성화됩니다. 따라서 당신이 숨겨졌다가 다시 나타났다는 사실을 알아야 할 이유가 거의 없습니다. onload
스크립트 코드를 다시 호출 하거나 인라인하는 것은 잘못된 것 입니다. 해당 함수에서 수행 한 바인딩 및 콘텐츠 생성은 동일한 콘텐츠에 대해 두 번째로 실행되어 잠재적으로 비참한 결과가 발생하기 때문입니다. (예 : document.write
인라인 스크립트에서는 페이지가 완전히 파괴됩니다.)
에 쓰기 window.onunload
가 영향을 미치는 이유 는 bfcache를 구현하는 브라우저가-언제 폐기 될지 알 필요가있는 페이지와의 호환성을 위해-언제 onunload
발생하는지 알기 위해 관심이 있다고 선언하는 페이지 는 bfcache가 비활성화됩니다. 해당 페이지는 bfcache에서 가져 오는 대신 페이지로 돌아갈 때 새로로드됩니다.
따라서 설정 window.onunload= function() {};
하면 실제로 수행하는 작업은 의도적으로 bfcache를 깨는 것입니다. 이로 인해 페이지 탐색 속도가 느려지므로 최후의 수단으로 사용하지 마십시오.
bfcache를 엉망으로 만들지 않고 사용자가 언제 페이지를 떠나거나 다시 돌아 왔는지 알아야하는 경우 대신 onpageshow
및 onpagehide
이벤트를 트랩 할 수 있습니다 .
window.onload=window.onpageshow= function() {
alert('Hello!');
};