브라우저의 뒤로 버튼을 클릭하면 기록 페이지가 새로 고쳐집니다.
먼저 이 문제가 어떻게 발생하는지 알고 있습니다. 다음 페이지 목록 정보 페이지가 있으면 클릭하여 세부정보 페이지에 들어가 세부정보 페이지의 데이터를 수정하고 기록을 통해 반환한 다음 목록 정보 페이지로 돌아갑니다. , 목록 정보는 과거에 반환되기 때문에 기본적으로 수정 전 원본 데이터가 계속 표시되며, 수정된 데이터를 새로 고쳐야 하는데, 반환을 클릭하여 이전 기록 페이지의 데이터를 새로 고칠 수 있는 방법이 있습니까? 버튼이 휴대폰에 있나요?
onpageshow 이벤트와 onload 이벤트. onpageshow 이벤트는 onload 이벤트와 유사하며 페이지가 처음 로드될 때 발생합니다. 즉, 페이지가 로드될 때 onload 이벤트가 발생하지 않습니다. 브라우저 캐시에서 읽습니다.
페이지가 서버에서 직접 로드되는지 아니면 캐시에서 읽는지 확인하려면 PageTransitionEvent 개체 의 지속형 속성 을 사용하여 확인할 수 있습니다. 페이지가 브라우저 캐시에서 이 속성을 읽으면 true를 반환하고, 그렇지 않으면 false를 반환합니다
해결책
By onload 메서드
코드는 다음과 같습니다.
페이지에서 숨겨진 입력
<input type="hidden" id="refreshed" value="no">
js 작업을 다음과 같이 작성합니다. Follows
onload=function(){ var refreshedId=document.getElementById("refreshed"); if(refreshedId.value=="no"){ refreshedId.value="yes"; } else{ refreshedId.value="no"; location.reload(); } }
onpageshow 방식을 통해
이 방식은 컴퓨터에서는 문제가 없으나 Apple Safari에서는 onload 이벤트가 실행되지 않는 경우가 있으니,
window.onpageshow = function(event) { if (event.persisted) { window.location.reload() } };
실제 동작을 통해 확인한 결과입니다. event.persisted는 컴퓨터에서는 항상 false를 반환하지만 모바일 사파리에서는 문제가 없습니다.
종합 솔루션
그래서 다음과 같이 코드를 작성하시면 됩니다.
if ((/iphone|ipod|ipad.*os 5/gi).test(navigator.appVersion)) { window.onpageshow = function(event) { if (event.persisted) { window.location.reload() } }; }else{ onload=function(){ var refreshedId=document.getElementById("refreshed"); if(refreshedId.value=="no"){ refreshedId.value="yes"; } else{ refreshedId.value="no"; location.reload(); } } }
위의 코드를 통해 사파리에서 페이지를 처음 열었을 때 가끔 스플래시 화면 효과가 나타나는 것을 발견했습니다.
다음 코드를 추가하세요:
$(window).bind("unload", function() { });
스플래시 화면 효과가 더 이상 나타나지 않습니다.
iframe을 통한 캐싱 방지
페이지에 다음 코드를 추가하세요
<iframe style="height:0px;width:0px;visibility:hidden" src="about:blank"> this prevents back forward cache </iframe>
이 방법은 확인이 필요합니다.
By timestamp강제 새로 고침 방법
다음 코드는 iPad의 Safari 반환 버튼 문제에 대한 것입니다.
var showLoadingBoxSetIntervalVar; var showLoadingBoxCount = 0; var showLoadingBoxLoadedTimestamp = 0 function showLoadingBox(text) { var showLoadingBoxSetIntervalVar=self.setInterval(function(){showLoadingBoxIpadRelaod()},1000); showLoadingBoxCount = 0 showLoadingBoxLoadedTimestamp = new Date().getTime(); //Here load the spinner } function showLoadingBoxIpadRelaod() { //计算时间超过500毫秒 var diffTime = ( (new Date().getTime()) - showLoadingBoxLoadedTimestamp - 500)/1000; showLoadingBoxCount = showLoadingBoxCount + 1; var isiPad = navigator.userAgent.match(/iPad/i) != null; if(diffTime > showLoadingBoxCount && isiPad){ location.reload(); } }
이 사례를 읽으신 후 방법을 마스터하셨으리라 믿습니다. 더 흥미로운 정보를 보려면 다른 관련 기사에 주목하세요. PHP 중국어 웹사이트에서!
관련 읽기:
캔버스를 사용하여 입자 분수 애니메이션 효과를 만드는 방법
위 내용은 브라우저의 뒤로 버튼을 클릭하면 기록 페이지가 새로 고쳐집니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











CSS에서 크기 조정 기호를 사용자 정의하는 방법은 배경색으로 통합됩니다. 매일 개발에서, 우리는 종종 조정과 같은 사용자 인터페이스 세부 정보를 사용자 정의 해야하는 상황을 발생시킵니다.

Safari에서 사용자 정의 스타일 시트 사용에 대한 토론 오늘 우리는 Safari 브라우저에 대한 사용자 정의 스타일 시트 적용에 대한 질문에 대해 논의 할 것입니다. 프론트 엔드 초보자 ...

최근 웹 페이지에 로컬로 설치된 글꼴 파일을 사용하여 인터넷에서 무료 글꼴을 다운로드하여 시스템에 성공적으로 설치했습니다. 지금...

브라우저의 인쇄 설정에서 페이지의 상단과 끝을 제어하기 위해 JavaScript 또는 CSS를 사용하는 방법. 브라우저의 인쇄 설정에는 디스플레이가 ...인지 제어 할 수있는 옵션이 있습니다.

웹 페이지에서 로컬로 설치된 글꼴 파일을 사용하는 방법 웹 페이지 개발 에서이 상황이 발생 했습니까? 컴퓨터에 글꼴을 설치했습니다 ...

어떤 경우에는 부정적인 마진이 적용되지 않는 이유는 무엇입니까? 프로그래밍 중에 CSS의 부정적인 마진 (음수 ...

Flex 레이아웃 및 솔루션에서 텍스트를 과도하게 누락하여 컨테이너 개구부 문제가 사용됩니다 ...

웹 디자인, CSS에서 다른 화면 크기에서 레이아웃 변경을 구현할 때 CSS를 사용하여 반응 형 레이아웃 구현 ...
