Oto, co musisz wiedzieć na ten temat:
- Zapytania dotyczące kontenerów oraz :has() to dopasowania stosowane w elastycznym wszechstronnym świecie.
- Nowy interfejs Sanitizer API udostępnia zaawansowany procesor do obsługi dowolnych ciągów znaków, który pomaga zmniejszyć podatność na ataki z wykorzystaniem skryptów między witrynami.
- Robimy kolejny krok w kierunku wycofania Web SQL.
- I to nie wszystko .
Mam na imię Pete LePage. Zobaczmy, co nowego dla programistów Chrome 105.
Zapytania dotyczące kontenera i właściwość CSS :has()
Zapytania o kontenery to jedna z najbardziej pożądanych funkcji Chrome 105. Umożliwiają one deweloperom wysyłanie zapytań do selektora nadrzędnego o informacje o skali i stylu, dzięki czemu element podrzędny może mieć własną logikę stylizacji w ramach strony, niezależnie od tego, gdzie się znajduje.
Są one podobne do zapytania @media, ale zamiast rozmiaru widocznego obszaru sprawdzają rozmiar kontenera.
Aby używać zapytań dotyczących kontenera, musisz ustawić ograniczenie w elemencie nadrzędnym. Możesz na przykład utworzyć kartę z obrazem i tekstem.
Aby utworzyć zapytanie kontenera, ustaw container-type
na kontenerze kart.
Ustawienie container-type
na inline-size
wysyła zapytanie o rozmiar inline-direction
elementu nadrzędnego.
.card-container {
container-type: inline-size;
}
Teraz możemy użyć tego kontenera, aby zastosować style do dowolnego z jego elementów podrzędnych za pomocą funkcji @container
.
.card {
display: grid;
grid-template-columns: 1fr 1fr;
}
@container (max-width: 400px) {
.card {
grid-template-columns: 1fr;
}
}
W tym przypadku, gdy kontener ma mniej niż 400 pikseli, przełącza się na układ z jedną kolumną.
Pseudoklasa CSS :has()
Możemy to jeszcze bardziej rozwinąć, używając pseudoklasy CSS :has()
. Umożliwia sprawdzenie, czy element nadrzędny zawiera elementy podrzędne z określonymi parametrami.
Na przykład p:has(span)
wskazuje selektor akapitu z elementem span. Możesz użyć tego, aby nadać styl akapitowi nadrzędnemu lub dowolnemu elementowi w jego obrębie. Możesz też użyć figure:has(figcaption)
, aby określić styl elementu figury zawierającego podpis.
p:has(span) {
/* magic styles */
}
figure:has(figcaption) {
/* this figure has a figcaption */
}
Bardziej szczegółowe wyjaśnienia i zabawne wersje demonstracyjne znajdziesz w artykule Uny @container and :has(): dwa nowe, zaawansowane elastyczne interfejsy API.
Interfejs API Sanitizer
Większość aplikacji internetowych często ma do czynienia z niesprawdzonymi ciągami znaków, ale bezpieczne renderowanie tego typu treści może być trudne. Bez odpowiedniej ostrożności łatwo jest przypadkowo stworzyć luki w zabezpieczeniach typu cross-site scripting.
Pomocne są też biblioteki takie jak DomPurify, które wiążą się z niewielkim nakładem pracy. Interfejs HTML Sanitizer API pomaga zmniejszyć liczbę luk w zabezpieczeniach związanych z wykonywaniem skryptów na wielu stronach, ponieważ umożliwia tworzenie funkcji sanitazowania w platformie.
Aby z niej korzystać, utwórz nową instancję Sanitizer. Następnie wywołaj metodę setHTML()
w elemencie, do którego chcesz wstawić wyczyszczone dane.
const mySanitizer = new Sanitizer();
const user_input = `<img src="" onerror=alert(0)>`;
elem.setHTML(user_input, { sanitizer: mySanitizer });
Interfejs Sanitizer API jest bezpieczny i można go dostosowywać, co pozwala na określenie różnych opcji konfiguracji, na przykład pomijanie niektórych elementów lub zezwalanie na inne.
const config = {
allowElements: [],
blockElements: [],
dropElements: [],
allowAttributes: {},
dropAttributes: {},
allowCustomElements: true,
allowComments: true
};
// sanitized result is customized by configuration
const mySanitizer = new Sanitizer(config);
Więcej informacji znajdziesz w artykule Bezpieczne manipulowanie DOM-em za pomocą interfejsu Sanitizer API.
Wycofanie bazy danych WebSQL z niezabezpieczonych kontekstów
Jakiś czas temu ogłosiliśmy plany wycofania Web SQL. Od Chrome 105 baza danych WebSQL nie będzie już obsługiwana w niebezpiecznych kontekstach.
Jeśli używasz Web SQL w niezabezpieczonych kontekstach, jak najszybciej przejdź na IndexDB lub do innego lokalnego kontenera pamięci masowej.
I inne funkcje
Oczywiście jest ich znacznie więcej.
- Możesz teraz zaktualizować nazwę zainstalowanej aplikacji PWA na komputerze i na urządzeniu mobilnym, aktualizując plik manifestu aplikacji internetowej.
- Interfejs API do rozmieszczania okien na wielu ekranach otrzymuje dokładne etykiety nazw ekranów.
- Dostępny jest już interfejs API nakładania elementów sterujących okien. Sprawia, że aplikacje PWA będą bardziej podobne do aplikacji, zamieniając obecny pasek tytułu o pełnej szerokości na małą nakładkę. Dzięki temu możesz umieścić niestandardową zawartość w obszarze paska tytułu.
Więcej informacji
Obejmuje to tylko niektóre najważniejsze informacje. Pod poniższymi linkami znajdziesz dodatkowe zmiany w Chrome 105.
- Nowości w Narzędziach deweloperskich w Chrome (105)
- Wycofanie i usunięcie funkcji w Chrome 105
- Aktualizacje ChromeStatus.com dotyczące Chrome 105
- Lista zmian w repozytorium kodu Chromium
- Kalendarz wydań Chrome
Subskrybuj
Aby być na bieżąco, zasubskrybuj kanał w YouTube dla programistów Chrome. Otrzymasz wtedy e-maila z powiadomieniem, gdy tylko opublikujemy nowy film.
Nazywam się Pete LePage i jak tylko pojawi się nowa wersja Chrome 106, opowiem Ci, co nowego w tej przeglądarce.