2015-01-08 5 views
0

IndexedDb를 많이 사용하는 상당히 복잡한 응용 프로그램을 만들었습니다. 약간의 수사 후에 나는 이것이 진정으로 성취 할 고통이라는 것을 알게되었습니다. 내가 생각할 수있는 유일한 방법은 웹 저장소 (크로스 탭 통신) 사용자에게 경고하기 위해 사용되는 :단일 페이지 응용 프로그램을 하나의 탭에서만 사용하도록 관용적 인 방법

다른 하나는

B 열려있을 때 그가 이전 탭을 계속하는 경우) 다른 탭을 열 수 없습니다)

폐쇄 될 것입니다

하지만 실제로 사용자를 귀찮게하는 것은 추합니다. 대안은 다음과 같습니다

  1. 여러 탭을 허용하고 내가 할 수있는 자원이없는 (조정하고 그대로 multitab 준수 프로그램을 의미 공유 컨텍스트 (먼 미래)를 통해 웹 스토리지 또는 SharedWorker를 사용하여 물건을 동기화 그래서 이럴에게 그것은
  2. 는 우편 배달부처럼 크롬 응용 프로그램으로 개발하거나

this test editor는 다른 대안이) 어쨌든 꽤 털이 것? 너희들 어떻게 지내니? "하나의 탭만"방식을 시행하지 않으면 앱의 복잡성이 너무 커질 것으로 생각됩니다. 여러 탭에서 작동하도록 앱의 모든 측면을 보호하는 것은 쉽지 않습니다.

답변

0

sessionStorage에 변수를 설정하고이 변수가 존재할 때마다 확인하십시오. 그렇다면 두 번째 탭과 당신은 반응 할 수 있습니다.

두 번째 탭의 첫 번째 탭에 신호를 보내려면 storage-Event을 사용할 수 있습니다. 첫 번째 탭에서 해당 이벤트를 듣고 페이지로드시 두 번째 탭에 무언가를 씁니다. 이 시점에서 이벤트가 첫 번째 탭에서 시작되고 반응 할 수 있습니다.

+0

기본적으로 내 질문에서 언급 한 첫 번째와 세 번째 사항입니다. 앱의 복잡성이 증가하고, 동기화하고 조정하기에는 너무 많은 것들이 있습니다. – lisak

+0

변수에 대해 확인하고이 시점에서 응용 프로그램이 종료되도록하기 만하면됩니다. 복잡성은 없습니다. 사용자가 다른 탭을 열지 못하게하십시오. – Fuzzyma

+0

방금 ​​세 번째 요령의 기술적 솔루션을 설명했습니다. 그렇게하는 것은 쉽지 않지만 분명히 사용자를 귀찮게하는 것은 매우 추합니다. 엄마도 무슨 일이 일어나고 있는지 이해 하시겠습니까? 그녀는 그것 때문에 브라우저 전체를 닫을 것입니다 :-) 나는이 3 가지 포인트가 어떻게 수행 될지를 설명하기 위해 여기에서 묻지 않았습니다. 나는 대안을 요구하고 있었다. – lisak