나는 많은 클라이언트 측 데이터 다운로드와 처리를 수행하는 앱을 만들고 있습니다. 데이터 처리는 하위 도메인에있는 iframe에서 처리되어 기본 앱과 분리됩니다. 데이터를 다운로드하는 것은이 iframe입니다. 의사 소통은 postMessage를 통해 이루어집니다.같은 도메인에있는 다른 창 사이에서 통신하기
더 나은 점만 제외하면 모든 것이 잘 작동합니다.
사용자가 추가 탭/창을 열면 앱이 현재 모든 데이터를 다시로드하고 중복 처리 작업을 수행 할 수도 있습니다.이 작업은 모든 작업이 느려지고로드하는 데 시간이 오래 걸리는 문제 이외의 문제는 아닙니다.
내가하고 싶은 것은 각 최상위 탭/창에서 iframe 처리 중 하나와 통신하는 것입니다.이 창은 원래 창을 닫으면 다시 열 수 있습니다. 문제는 자바 스크립트를 통해 열리지 않지만 일반 브라우저 메소드를 통해 탭에서 링크를 열면 메시지를 보내는 데 필요한 iframe에 대한 참조를 얻을 수 없다는 것입니다.
어쨌든 iframe에 대한 창 참조를 다른 탭에 전달하여 postMessage를 통해 통신 할 수 있습니까? 이것이 공유 된 근로자를 통해 어느정도 달성 될 수 있습니까?
전체 처리 작업에 공유 된 작업자를 사용할 수 있다는 것을 알았지 만 데이터가 작업자 내부에서 액세스 할 수없는 제 3 자 도메인에서 발생하므로 자체 문제가 발생할 수 있습니다.
모든 주요 브라우저의 최신 버전과의 호환성 만 필요합니다.
편집 : SharedWorker가 아직 파이어 폭스에서 구현되지 않았다는 것을 발견했습니다. 따라서 작동하지 않을 것입니다. 이걸 얻을 수있는 다른 방법은 없나요?
편집 2 : 난 당신이 사용할 수 있다는 것을 발견했습니다
var win = window.open('', 'my_window_name');
다른 창에서 iframe이에 대한 참조를 캡처. iframe이 아직 존재하지 않으면 창으로 열립니다. 즉시 닫힌 경우에도 깜박임이 발생하고 '팝업 차단됨'메시지가 표시되어 사용할 수 없게됩니다.
웹 근로자는 IE 10에서만 작동하므로 옵션이 아닌 것 같습니다 .-) –
html5 localstorage를 사용할 수 있습니까? – pahnin
그리고 javascript를 사용하여 – pahnin