2016-12-09 10 views
0

Jetzt benutze ich das visibilification-Ereignis, um zu sehen, welche Browser-Registerkarte aktiv ist. Ich verwende die aktive Registerkarte, um einige Ereignisse auf der Serverseite zu beobachten, und ich möchte diesen Beobachter nicht in allen geöffneten Registerkarten ausführen.Javascript. Überprüfen Sie, ob keine Registerkarte im Fokus ist.

Aber jetzt möchte ich diesen Beobachter ausführen, auch wenn keine Registerkarte im Fokus ist, aber immer noch, in nur einem Tab.

Wie überprüft man, ob keine Registerkarte im Fokus ist und sicherstellen, dass ein Skript nur in einer Hintergrundregisterkarte ausgeführt wird?

Antwort

1

Sie müssen das Problem der Kommunikation zwischen den Registerkarten lösen. Es gibt mehrere Möglichkeiten:

  1. Plätzchen
  2. lokale Speicher
  3. Server-Seite Syncing (WebSockets, Ajax-Pooling, etc)

Jede Registerkarte wird seinen Zustand in der gemeinsamen Datencenter aktualisieren (einer der oben genannten).

Sobald dies erledigt ist, sollten Sie einen Master-Auswahlalgorithmus verwenden, um zu entscheiden, welche der Registerkarten mit dem Server kommunizieren soll. In Ihrem Fall könnte dies so einfach wie die zuerst geöffnete Registerkarte sein.

Es gibt einige Besonderheiten bei der Verwendung von lokalem Speicher, z. B. zwei verschiedene Subdomains können nicht auf denselben lokalen Speicher zugreifen. Cookies sind ein anderer Weg, wo Sie auch die übergeordnete Domain definieren können. Ich würde sagen, die dritte Option ist die beste in Bezug auf das Debuggen und Hinzufügen von komplexeren Auswahllogik.

Verwandte Themen