Chrome 83 jest już wdrażany w wersji stabilnej.
Oto, co musisz wiedzieć na ten temat:
- Zaufane typy pomagają zapobiegać lukom w zabezpieczeniach typu cross-site scripting.
- Elementy formularzy przeszły ważną przemianę.
- Jest nowy sposób wykrywania wycieków pamięci.
- Natywna funkcja interfejsu API systemu plików rozpoczyna nowy okres próbny z dodatkowymi funkcjami.
- pojawiły się nowe zasady dotyczące wielu witryn.
- Wprowadziliśmy program wskaźników internetowych, aby zapewnić ujednolicone wskazówki dotyczące sygnałów jakości, które naszym zdaniem są niezbędne do zapewnienia użytkownikom wrażeń w internecie.
- i inne.
Nazywam się Pete LePage i pracuję oraz nagrywam filmy z domu. Zobaczmy, co nowego w Chrome 83 dla programistów.
Zaufane typy
Wykorzystywanie DOM do ataków cross-site scripting jest jedną z najczęstszych luk w zabezpieczeniach w internecie. Łatwo można go przypadkowo wprowadzić na stronę. Zaufane typy mogą zapobiegać tego typu podatnościom, ponieważ wymagają przetworzenia danych przed przekazaniem ich do potencjalnie niebezpiecznej funkcji.
Weźmy na przykład innerHTML
. Jeśli włączysz zaufane typy, a próbujesz przekazać ciąg znaków, pojawi się błąd TypeError, ponieważ przeglądarka nie wie, czy może zaufać temu ciągowi znaków.
// Trusted types turned on
const elem = document.getElementById('myDiv');
elem.innerHTML = `Hello, world!`;
// Will throw a TypeError
Zamiast tego musisz użyć bezpiecznej funkcji, takiej jak textContent
, przekazać zaufany typ lub utworzyć element i użyć appendChild()
.
// Use a safe function
elem.textContent = ''; // OK
// Pass in a trusted type
import DOMPurify from 'dompurify';
const str = `Hello, world!`;
elem.innerHTML = DOMPurify.sanitize(str, {RETURN_TRUSTED_TYPE: true});
// Create an element
const img = document.createElement('img');
img.src = 'xyz.jpg';
elem.appendChild(img);
Zanim włączysz zaufane typy, musisz zidentyfikować i usunąć wszelkie naruszenia za pomocą nagłówka report-only
CSP.
Content-Security-Policy-Report-Only: require-trusted-types-for 'script'; report-uri //example.com
Gdy wszystko będzie gotowe, możesz go włączyć. Pełne informacje znajdziesz w artykule Zapobieganie lukom w skryptach XSS w DOM za pomocą zaufanych typów na stronie web.dev.
Aktualizacje elementów sterujących formularza
Elementy sterujące formularzami HTML są używane przez nas na co dzień i stanowią kluczowy element interakcji w internecie. Są łatwe w użyciu, mają wbudowane ułatwienia dostępu i są znane użytkownikom. Styl elementów sterujących formularza może być niespójny w różnych przeglądarkach i systemach operacyjnych. Często musimy wysyłać wiele reguł CSS, aby uzyskać spójny wygląd na różnych urządzeniach.


Jestem pod wrażeniem pracy, jaką Microsoft wkłada w modernizację wyglądu elementów sterujących formularzem. Oprócz ładniejszego stylu wizualnego oferują one lepszą obsługę ekranów dotykowych i ułatwienia dostępu, w tym ulepszoną obsługę klawiatury.
Nowe elementy sterowania formularzem są już dostępne w Microsoft Edge, a teraz są też dostępne w Chrome 83. Więcej informacji znajdziesz w artykule Updates to Form Controls and Focus na blogu Chromium.
Wersje próbne origin
Pomiar pamięci za pomocą measureMemory()
Od wersji Chrome 83, w której rozpoczyna się testowanie origin interfejsu performance.measureMemory()
, jest to nowy interfejs API, który umożliwia pomiar wykorzystania pamięci przez stronę i wykrywanie wycieków pamięci.
Wycieki pamięci są łatwe do wprowadzenia:
- zapomnisz zarejestrować detektora zdarzeń.
- Przechwytywanie obiektów z elementu iframe
- Nie zamykanie instancji roboczej
- Gromadzenie obiektów w tablicach
- i tak dalej.
Wycieki pamięci powodują, że strony są wolne i wyglądają na przeładowane.
if (performance.measureMemory) {
try {
const result = await performance.measureMemory();
console.log(result);
} catch (err) {
console.error(err);
}
}
Więcej informacji o nowym interfejsie API znajdziesz na stronie Monitorowanie całkowitego wykorzystania pamięci przez stronę internetową za pomocą funkcji measureMemory()
na stronie web.dev.
Aktualizacje interfejsu Native File System API
W wersji 83 Chrome rozpoczęliśmy testowanie interfejsu Native File System API w ramach wersji próbnej origin z obsługą strumieni do zapisu i możliwością zapisywania uchwytów plików.
async function writeURLToFile(fileHandle, url) {
// Create a FileSystemWritableFileStream to write to.
const writable = await fileHandle.createWritable();
// Make an HTTP request for the contents.
const response = await fetch(url);
// Stream the response into the file.
await response.body.pipeTo(writable);
// pipeTo() closes the destination pipe automatically.
}
Zapisywalne strumienie znacznie ułatwiają zapisywanie danych w pliku. Ponieważ jest to strumień, możesz łatwo przesyłać odpowiedzi z jednego strumienia do drugiego.
Zapisywanie uchwytów plików w IndexedDB umożliwia przechowywanie stanu lub zapamiętywanie plików, nad którymi pracował użytkownik. Możesz na przykład zachować listę ostatnio edytowanych plików, otworzyć ostatni plik, nad którym pracował użytkownik, itp.
Aby korzystać z tych funkcji, musisz mieć nowy token próbny pochodzenia. Więcej informacji na ten temat oraz sposób uzyskania nowego tokenu próbnego pochodzenia znajdziesz w zaktualizowanym artykule Interfejs API natywnego systemu plików: uproszczenie dostępu do plików lokalnych na stronie web.dev.
Inne wersje próbne
Pełną listę funkcji dostępnych w wersji próbnej origin znajdziesz
Nowe zasady dotyczące dostępu do zasobów z innych domen
Niektóre interfejsy API zwiększają ryzyko ataków typu side-channel, takich jak Spectre.
Aby ograniczyć to ryzyko, przeglądarki oferują odizolowane środowisko oparte na opcjonalnym zgłaszaniu, zwane izolowanym od zasobów z innych domen. Stan izolowania od zasobów z innych domen uniemożliwia też modyfikowanie wartości document.domain
. Możliwość zmiany atrybutu document.domain
umożliwia komunikację między dokumentami w tej samej witrynie i jest uważana za lukę w zasadach dotyczących tej samej domeny.
Aby uzyskać więcej informacji, przeczytaj wpis Eiji Uzyskiwanie przez witrynę „ochrony przed powiązaniami między domenami” za pomocą mechanizmów COOP i COEP.
Parametry życiowe w internecie
Pomiar jakości wrażeń użytkownika ma wiele aspektów. Chociaż niektóre aspekty wrażeń użytkownika zależą od strony i kontekstu, istnieje wspólny zestaw sygnałów (nazywany podstawowymi wskaźnikami internetowymi), który ma kluczowe znaczenie dla wszystkich wrażeń związanych z przeglądaniem stron internetowych. Te podstawowe potrzeby związane z wygodą użytkowników obejmują wczytywanie, interaktywność i stabilność wizualna zawartości strony. Wszystkie te elementy stanowią podstawę Podstawowych wskaźników internetowych z 2020 r.
- Największe wyrenderowanie treści mierzy wyczuwalną szybkość wczytywania i oznacza na osi czasu wczytywania strony moment, w którym prawdopodobnie załadowano jej główną zawartość.
- Opóźnienie przy pierwszym działaniu mierzy responsywność i określa, jakie wrażenia mają użytkownicy, gdy po raz pierwszy próbują wejść w interakcję ze stroną.
- Skumulowane przesunięcie układu mierzy stabilność wizualną i określa ilość nieoczekiwanych przesunięć układu widocznych treści na stronie.
Wszystkie te dane obejmują ważne wyniki związane z użytkownikiem, są możliwe do zmierzenia w warunkach rzeczywistych i mają odpowiedniki oraz narzędzia diagnostyczne do badań laboratoryjnych. Na przykład największy wskaźnik wyrenderowania treści jest najważniejszym wskaźnikiem wczytywania, ale jest też silnie zależny od pierwszego wyrenderowania treści (FCP) i czasu do pierwszego bajta (TTFB), które nadal należy monitorować i ulepszać.
Więcej informacji znajdziesz w artykule Wskaźniki internetowe: ważne dane, które pomogą Ci utrzymać stronę w dobrej kondycji na blogu Chromium.
I nie tylko
- Chrome obsługuje teraz interfejs Barcode Detection API, który umożliwia wykrywanie i dekodowanie kodów kreskowych.
- Nowa funkcja CSS
@supports
umożliwia wykrywanie funkcji w selektorach CSS. - Nowe adnotacje ARIA ułatwiają korzystanie z czytnika ekranu w przypadku komentarzy, sugestii i wyróżnień tekstu o znaczeniu semantycznym (podobnie jak
<mark>
). - Zapytanie o multimedia
prefers-color-scheme
pozwala autorom obsługiwać własny ciemny motyw, dzięki czemu mają pełną kontrolę nad tworzonymi przez siebie treściami. - Język JavaScript obsługuje teraz moduły w ramach współdzielonych instancji roboczych.
Chcesz wiedzieć, co będzie dalej? Sprawdź Fugu API Tracker.
Więcej informacji
Obejmuje to tylko niektóre najważniejsze informacje. Aby dowiedzieć się więcej o dodatkowych zmianach w Chrome 83, kliknij linki poniżej.
- Nowości w Narzędziach deweloperskich w Chrome (83)
- Funkcje wycofane i usunięte z Chrome 83
- Aktualizacje ChromeStatus.com dotyczące Chrome 83
- Nowości w JavaScript w Chrome 83
- Lista zmian w repozytorium kodu Chromium
Subskrybuj
Jeśli chcesz być na bieżąco z naszych filmów, zasubskrybuj kanał YouTube dla programistów Chrome. Otrzymasz wtedy e-maila z powiadomieniem, gdy opublikujemy nowy film.
Nazywam się Pete LePage i potrzebuję fryzjera, ale gdy tylko Chrome 84 zostanie wydany, opowiem Ci, co nowego w tej przeglądarce.