Używanie document.write()
może opóźnić wyświetlanie zawartości strony o kilkadziesiąt sekund i jest szczególnie problematyczne w przypadku użytkowników, którzy mają wolne połączenie.
Dlatego w wielu przypadkach Chrome blokuje wykonanie polecenia document.write()
, co oznacza, że nie możesz na nim polegać.
Jeśli używasz narzędzia document.write()
, w konsoli Narzędzi deweloperskich w Chrome zobaczysz ten komunikat:
[Violation] Avoid using document.write().
W konsoli Narzędzi deweloperskich w przeglądarce Firefox zobaczysz ten komunikat:
An unbalanced tree was written using document.write() causing
data from the network to be reparsed.
Co się dzieje z audytem Lighthouse document.write()
Lighthouse zgłasza wywołania do document.write()
, które nie zostały zablokowane przez Chrome:
W najbardziej problematycznych zastosowaniach Chrome będzie blokować wywołania document.write()
lub w zależności od szybkości połączenia użytkownika wyświetlać ostrzeżenie w konsoli.
Tak czy inaczej, wywołania, których dotyczy problem, pojawią się w konsoli Narzędzi deweloperskich.
Więcej informacji można znaleźć w artykule Google dotyczącym interwencji przeciwko document.write()
.
Lighthouse zgłasza wszystkie pozostałe wywołania funkcji document.write()
, ponieważ wpływa ono niekorzystnie na wydajność niezależnie od sposobu użycia. Istnieją też lepsze alternatywy.
Unikaj: document.write()
Usuń z kodu wszystkie przypadki użycia document.write()
. Jeśli używasz go do wstrzykiwania skryptów innych firm, spróbuj skorzystać z ładowania asynchronicznego.
Jeśli kod innej firmy korzysta z metody document.write()
, poproś dostawcę o obsługę wczytywania asynchronicznego.