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
hiddenw dokumencie na boolowską wartośćfalse. - Ustaw atrybut
visibilityStatew dokumencie na łańcuch znakowy"visible". - Odpal zdarzenie typu
visibilitychangena 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
hiddenw dokumencie na boolowską wartośćtrue. Ustaw atrybut
visibilityStatew dokumencie na łańcuch znakowy"hidden". Jeśli aplikacja kliencka ma rozładować dokument to ustaw atrybutvisibilityStatew dokumencie na łańcuch znakowy"unloaded".Ustawienie atrybutu
visibilityStatena łańcuch znakowy"unloaded"zamiast"hidden"jest opcjonalne.- Odpal zdarzenie typu
visibilitychangena dokumencie, które bąbelkuje, nie można go anulować i nie posiada domyślnych akcji.