여러 탭 간 통신 을 실현 하 는 몇 가지 방법
2351 단어 전단HTMLJavascript컴퓨터 네트워크문 제 를 풀다
1.localstorage
localstorage 는 브 라 우 저 여러 탭 이 공유 하 는 저장 공간 이기 때문에 다 중 탭 간 의 통신 을 실현 할 수 있 습 니 다 (ps: session 은 세 션 급 저장 공간 이 고 모든 탭 은 단독 입 니 다).
2.SharedWorker
Shared Worker 는 여러 window 에서 공동으로 사용 할 수 있 지만 이 탭 들 이 모두 같은 소스 (같은 프로 토 콜, 호스트, 포트 번호) 임 을 보증 해 야 합 니 다.
3. websocket 통신
듀 플 렉 스 (full - duplex) 통신 은 자 연 스 럽 게 여러 태그 간 의 통신 을 실현 할 수 있다.
4. 타이머 setInterval + 쿠키
1. 페이지 A 에 setInterval 타 이 머 를 사용 하여 계속 새로 고침 을 설정 하고 Cookies 의 값 이 변 했 는 지 확인 하 며 변 하면 새로 고침 을 수행 합 니 다.
2. Cookies 는 같은 도 메 인 에서 읽 을 수 있 기 때문에 페이지 B 에서 심사 할 때 Cookies 의 값 을 바 꾸 면 페이지 A 는 자 연 스 럽 게 받 을 수 있 습 니 다.
이렇게 하면 확실히 내 가 원 하 는 기능 을 실현 할 수 있 지만, 이러한 방법 은 상당히 자원 을 낭비 하 는 것 이다. 비록 이 성능 이 너무 왕성 한 시대 에 낭비 하고 낭비 하지 않 아 도 느끼 지 못 하지만, 이러한 실현 방안 은 확실히 우아 하지 않다.
5.postMessage
대화 가 필요 한 tab 페이지 는 의존 관계 가 있 습 니 다.
예 를 들 어 A 페이지 에서 JavaScript 의 window. open 을 통 해 B 페이지 를 열거 나 B 페이지 가 iframe 을 통 해 A 페이지 에 삽입 되 는 경우 가 가장 간단 합 니 다. HTML 5 의 window. postmessage API 를 통 해 통신 을 완성 할 수 있 습 니 다. postmessage 함 수 는 window 전역 대상 에 연결 되 어 있 기 때문에 통신 페이지 에 한 페이지 (예 를 들 어 A 페이지) 가 있어 야 다른 페이지 (예 를 들 어 B 페이지) 를 얻 을 수 있 습 니 다.의 window 대상, 이렇게 해야만 단 방향 통신 을 완성 할 수 있 습 니 다. B 페이지 는 A 페이지 의 window 대상 을 가 져 올 필요 가 없습니다. 만약 에 B 페이지 가 A 페이지 에 대한 통신 이 필요 하 다 면 B 페이지 에서 message 사건 을 검색 하고 사건 에서 전달 하 는 source 대상 을 가 져 와 야 합 니 다. 이 대상 은 A 페이지 window 대상 의 참조 입 니 다.
//B
B
window.addEventListner('message',(e)=>{
let {data,source,origin} = e;
source.postMessage('message echo','/');
});
postmessage 의 첫 번 째 매개 변 수 는 메시지 실체 입 니 다. 구조 화 된 대상 입 니 다. 즉, 'JSON. stringify 와 JSON. parse' 함수 로 복원 할 수 있 는 대상 입 니 다. 두 번 째 매개 변 수 는 메시지 전송 범위 선택 기 입 니 다. '/' 로 설정 하면 같은 소스 의 페이지 에 만 메 시 지 를 보 내 고 '*' 로 설정 하면 모든 페이지 를 보 냅 니 다.
참고 글:https://juejin.im/post/5acdba01f265da23826e5633 https://juejin.im/post/5b0d0a3cf265da092767917f#heading-0 https://segmentfault.com/q/1010000006664804 https://juejin.im/post/59bb7080518825396f4f5177#heading-0 https://segmentfault.com/a/1190000011207317 https://blog.csdn.net/qq_34626003/article/details/70231078 https://www.cnblogs.com/chengdabelief/p/6686070.html https://www.cnblogs.com/chengdabelief/p/6685917.html https://www.jianshu.com/p/31facd4934d7
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
전단 자동화 워 크 플 로 의 hooks예 를 들 어 우 리 는 git commt 전에 eslint 코드 검사, npm install 전에 프로젝트 의존 도 를 검사 하고 싶 습 니 다.전형 적 인 상황 에서 각종 도 구 는 특정한 동작 이 발생 할 때 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.