Ogólne#
Page Visibility#
W tym miejscu umieszczam powtarzające się specyficzne pojęcia i algorytmy w dziale Page visibility.
Pojęcia#
visibilitychange
event
Aplikacja kliencka musi odpalić zdarzenie typu visibilitychange #
na dokumencie, kiedy aplikacja kliencka ustaliła, że widoczność dokumentu zawartego w kontekście przeglądania najwyższego poziomu uległa zmianie.
privacy
API widoczności strony umożliwia osadzonym treściom od osób trzecich odczytanie aktualnej widoczności dokumentu zawartego w kontekście przeglądania najwyższego poziomu z większą dokładnością w porównaniu do istniejących mechanizmów, takich jak chociażby zdarzeń typu blur
lub focus
. Jednakże z praktycznego punktu widzenia ekspozycja taka nie jest szczególnie istotna i nie zwiększa zagrożenia dla ogólnej prywatności.
Algorytmy#
processing model
Kiedy aplikacja kliencka ustaliła, że widoczność dokumentu zawartego w kontekście przeglądania najwyższego poziomu uległa zmianie, to musi wykonać następujące kroki z modelu przetwarzania (processing model):
Jeśli dokument zawarty w kontekście przeglądania najwyższego poziomu jest teraz częściowo widoczny przynajmniej na jednym ekranie:
- Jeśli nastąpiło przejście do pozycji w historii sesji to uruchom algorytm teraz widoczny przed uruchomieniem kroku odpalenia zdarzenia typu
pageshow
. - W przeciwnym razie kolejkuj zadanie dla uruchomienia algorytmu teraz widoczny.
- Jeśli nastąpiło przejście do pozycji w historii sesji to uruchom algorytm teraz widoczny przed uruchomieniem kroku odpalenia zdarzenia typu
Lub jeśli dokument zawarty w kontekście przeglądania najwyższego poziomu nie jest teraz widoczny lub kiedy aplikacja kliencka rozładowuje dokument:
- Jeśli aplikacja kliencka rozładowała dokument to uruchom algorytm teraz ukryty podczas kroków zmiany widoczności rozładowania dokumentu.
- W przeciwnym razie kolejkuj zadanie dla uruchomienia algorytmu teraz ukryty.
now visible
Algorytm teraz widoczny # (now visible) składa się z następujących kroków wykonywanych synchronicznie:
- Ustaw atrybut
hidden
w dokumencie na boolowską wartośćfalse
. - Ustaw atrybut
visibilityState
w dokumencie na łańcuch znakowy"visible"
. - Odpal zdarzenie typu
visibilitychange
na dokumencie, które bąbelkuje, nie można go anulować i nie posiada domyślnych akcji.
now hide
Algorytm teraz ukryty # (now hide) składa się z następujących kroków wykonywanych synchronicznie:
- Ustaw atrybut
hidden
w dokumencie na boolowską wartośćtrue
. Ustaw atrybut
visibilityState
w dokumencie na łańcuch znakowy"hidden"
. Jeśli aplikacja kliencka ma rozładować dokument to ustaw atrybutvisibilityState
w dokumencie na łańcuch znakowy"unloaded"
.Ustawienie atrybutu
visibilityState
na łańcuch znakowy"unloaded"
zamiast"hidden"
jest opcjonalne.- Odpal zdarzenie typu
visibilitychange
na dokumencie, które bąbelkuje, nie można go anulować i nie posiada domyślnych akcji.