먼저 다음 페이지에서는 sessionStorage가 무엇인지 알아보겠습니다.
1. 현재 페이지 A의 sessionStorage 값은 123입니다. F5로 페이지를 새로고침했는데 sessionStorage 값이 그대로 남아있나요?
대답: 그렇습니다.
2. 페이지 A의 현재 sessionStorage 값은 123입니다. 페이지 A의 주소를 복사하고 브라우저에서 새 TAB 페이지를 열고 해당 주소를 페이지 A에 액세스하기 위해 붙여 넣습니다. sessionStorage 값 123이 여전히 있습니까?
대답: 아니요.
동일한 URL로 여러 탭 페이지를 열면 자체
sessionStorage
.
3. 현재 페이지 A의 sessionStorage 값은 123입니다. 페이지 A의 탭을 닫고 브라우저의 열기 기록 페이지를 사용하여 페이지 A를 복원했습니다. sessionStorage 값이 여전히 있습니까?
대답: 그렇습니다.
페이지 세션은 브라우저가 열려 있는 동안 유지되며, 페이지를 다시 로드하거나 복원하면 원래 페이지 세션이 유지됩니다.
4. 여러 탭 간의 sessionStorage를 직접 공유하고 액세스할 수 있나요?
자, "여러 탭 간의 sessionStorage를 직접 공유하고 액세스할 수 있습니까?"라는 질문으로 돌아가서 단번에 아니오라고 대답하지 마십시오. 이 질문에 대한 답변은 몇 분 정도 걸립니다.
상황 1: 다른 도메인 이름을 가진 페이지의 sessionStorage를 직접 공유하고 액세스할 수 있습니까?
대답: 아니요.
시나리오 2: 동일한 도메인 이름을 가진 페이지의 sessionStorage를 직접 공유하고 액세스할 수 있습니까?
여기에는 많은 상황이 있습니다.
다음 A와 B는 모두 동일한 도메인 이름에 속하며 "window.sessionStorage.setItem("This is the first page", "123")"의 sessionStorage 값을 예로 들어 보겠습니다.
1. 페이지 A에서 window.open('./B.html)을 호출하는 버튼을 클릭하여 페이지 B를 엽니다. 페이지 B의 sessionStorage가 페이지 A의 sessionStorage와 동일한 것을 볼 수 있습니다.
태그를 통해 여는 것은 window.open과 동일합니다.
<a href="./B.html" target="_block">这是跳转B页面的a标签</a>
답변: 페이지 B는 페이지 A의 sessionStorage 값에 액세스할 수 있습니다.
위 상황은 새로운 질문을 제기합니다. 페이지 B가 페이지 A의 세션 저장 공간을 직접 공유합니까? 아니면 A 페이지의 sessionStorage 복사본을 복사하여 B 페이지에 넣으시겠습니까?
탐색 프로세스: 페이지 A에서 window.sessionStorage.setItem("This is the first page", "456")을 실행하고 sessionStorage 값을 수정합니다. 페이지 A의 sessionStorage가 변경된 것을 확인할 수 있으며, 세션이 페이지 A의 저장 값은 여전히 123이고, window.open을 통해 열린 페이지 B의 세션 저장 값은 여전히 123입니다.
2. 페이지 A에 sessionStorage 값이 있습니다. 페이지 B의 주소를 직접 복사하여 브라우저의 동일한 창에 새 탭 페이지를 생성합니다. 페이지 B의 주소를 입력하고 Enter 키를 눌러 페이지 B를 엽니다.
답변: 페이지 B는 페이지 A에 액세스한 sessionStorage 값을 복사할 수 없습니다.
위의 상황을 바탕으로 다음과 같은 결론을 내립니다.
서로 다른 도메인 이름의 SessionStorage는 공유할 수 없으며, 동일한 도메인 이름의 여러 창 간에 sessionStorage 상태를 공유할 수 없습니다! ! !
그러나 일부 특정 시나리오에서는 이 페이지의 새 탭이나 창으로 열린 동일 출처 페이지가 이전 페이지의 sessionStorage를
“
복사 합니다.”
하지만 이는 복사본일 뿐이므로 A 페이지에서 sessionStorage를 수정하면 A 페이지에서 새 B 페이지를 열지 않는 한 열려 있는 B 페이지의 sessionStorage 값도 그에 따라 업데이트됩니다.