Ahora Chrome 83 está comenzando a lanzarse de forma estable.
Tenga en cuenta lo siguiente:
- Los tipos de confianza ayudan a evitar vulnerabilidades de secuencia de comandos entre sitios.
- Los elementos de formulario se someten a una transformación importante.
- Hay una nueva manera de detectar fugas de memoria.
- La API del sistema de archivos nativo inicia una prueba de origen nueva con funcionalidad agregada.
- Hay nuevas políticas de origen cruzado.
- Presentamos el programa Métricas web para proporcionar orientación unificada sobre los indicadores de calidad que, creemos, son esenciales para ofrecer una excelente experiencia del usuario en la Web.
- Y mucho más.
Soy Pete LePage. Trabajo y disparo desde casa. Veamos las novedades para desarrolladores en Chrome 83.
Tipos de confianza
La secuencia de comandos entre sitios basada en DOM es una de las vulnerabilidades de seguridad más comunes en la Web. Puede ser fácil introducir una por error en tu página. Los tipos de confianza pueden ayudar a prevenir este tipo de vulnerabilidades, ya que requieren que proceses los datos antes de pasarlos a una función potencialmente peligrosa.
Tomemos como ejemplo innerHTML
, con los tipos de confianza activados, si intento pasar una cadena, fallará con un TypeError porque el navegador no sabe si puede confiar en la cadena.
// Trusted types turned on
const elem = document.getElementById('myDiv');
elem.innerHTML = `Hello, world!`;
// Will throw a TypeError
En cambio, debo usar una función segura, como textContent
, pasar un tipo de confianza o crear el elemento y usar 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);
Antes de activar los tipos de confianza, deberás identificar y corregir cualquier incumplimiento con un encabezado de CSP report-only
.
Content-Security-Policy-Report-Only: require-trusted-types-for 'script'; report-uri //example.com
Cuando ya tenga todo configurado, podrá encenderlo correctamente. Obtén más información en Cómo evitar las vulnerabilidades de las secuencias de comandos entre sitios basadas en DOM con Trusted Types en web.dev.
Actualizaciones de los controles de formularios
Todos los días usamos controles de formularios HTML y estos son clave para gran parte de la interactividad de la Web. Son fáciles de usar, tienen accesibilidad incorporada y están familiarizados para nuestros usuarios. El estilo de los controles de formulario puede ser inconsistente en distintos navegadores y sistemas operativos. A menudo, tenemos que enviar varias reglas CSS solo para obtener un aspecto coherente en todos los dispositivos.
Estoy muy impresionado con el trabajo que realizó Microsoft para modernizar la apariencia de los controles de formularios. Más allá del atractivo estilo visual, ofrecen una mejor compatibilidad táctil, una mejor accesibilidad, incluida una mayor compatibilidad con el teclado.
Los nuevos controles de formulario ya llegaron a Microsoft Edge y ahora están disponibles en Chrome 83. Para obtener más información, consulta Actualizaciones de los controles de formulario y el enfoque en el blog de Chromium.
Pruebas de origen
Mide la memoria con measureMemory()
A partir de una prueba de origen en Chrome 83, performance.measureMemory()
es una nueva API que permite medir el uso de memoria de tu página y detectar fugas de memoria.
Las fugas de memoria son fáciles de generar:
- Olvidar cancelar el registro de un objeto de escucha de eventos
- Cómo capturar objetos de un iframe
- No cerrar un trabajador
- Acumula objetos en arreglos
- y así sucesivamente.
Las fugas de memoria hacen que las páginas parezcan lentas y demasiado grandes para los usuarios.
if (performance.measureMemory) {
try {
const result = await performance.measureMemory();
console.log(result);
} catch (err) {
console.error(err);
}
}
Consulta Supervisa el uso total de memoria de tu página web con measureMemory()
en web.dev para obtener todos los detalles de la API nueva.
Actualizaciones en la API de Native File System
La API de Native File System inició una nueva prueba de origen en Chrome 83 con compatibilidad para transmisiones que admiten escritura y la capacidad de guardar controladores de archivos.
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.
}
Las transmisiones con capacidad de escritura facilitan mucho la escritura en un archivo y, debido a que son transmisiones, puedes canalizar respuestas de una transmisión a otra con facilidad.
Guardar controladores de archivos en IndexedDB te permite almacenar el estado o recordar en qué archivos estuvo trabajando un usuario. Por ejemplo, mantén una lista de archivos editados recientemente, abre el último archivo en el que estuvo trabajando el usuario, etcétera.
Necesitarás un nuevo token de prueba de origen para usar estas funciones, así que consulta mi artículo actualizado La API del sistema de archivos nativos: Simplifica el acceso a archivos locales en web.dev con todos los detalles, y cómo obtener tu nuevo token de prueba de origen.
Otras pruebas de origen
Verifica si hay una lista completa de las funciones en la prueba de origen.
Nuevas políticas de origen cruzado
Algunas APIs web aumentan el riesgo de ataques de canal lateral, como Spectre.
Para mitigar ese riesgo, los navegadores ofrecen un entorno aislado basado en la habilitación
llamado aislado de origen cruzado. El estado aislado de origen cruzado también evita que se modifiquen document.domain
. Poder modificar document.domain
permite la comunicación entre documentos del mismo sitio y se consideró una oportunidad en la política del mismo origen.
Para obtener más detalles, consulta la publicación de Eiji sobre cómo hacer que tu sitio web sea "aislado de origen cruzado" con COOP y COEP.
Métricas web
Medir la calidad de la experiencia del usuario tiene muchas facetas. Si bien algunos aspectos de la experiencia del usuario son específicos del sitio y el contexto, hay un conjunto común de indicadores, las "Métricas web esenciales", que es fundamental para todas las experiencias web. Estas necesidades principales de la experiencia del usuario incluyen la experiencia de carga, la interactividad y la estabilidad visual del contenido de la página, y su combinación es la base de las Métricas web esenciales de 2020.
- Largest Contentful Paint mide la velocidad de carga percibida y marca el punto en el cronograma de carga de la página cuando es probable que se haya cargado el contenido principal de la página.
- El retraso de primera entrada mide la capacidad de respuesta y cuantifica la experiencia que sienten los usuarios cuando intentan interactuar con la página por primera vez.
- Cambio de diseño acumulado mide la estabilidad visual y cuantifica la cantidad de cambios de diseño inesperados del contenido visible de la página.
Todas estas métricas capturan resultados importantes centrados en el usuario, se pueden medir en el campo y cuentan con herramientas y equivalentes de métricas de diagnóstico de lab compatibles. Por ejemplo, si bien Largest Contentful Paint es la métrica de carga de la línea superior, también depende en gran medida de First Contentful Paint (FCP) y del tiempo hasta el primer byte (TTFB), que siguen siendo fundamentales para supervisar y mejorar.
Si quieres obtener más información, consulta Presentación de las Métricas web: métricas esenciales para un sitio en buen estado en el blog de Chromium a fin de obtener más información.
Más entornos
- Chrome ahora es compatible con la API de Barcode Detection, que ofrece la capacidad de detectar y decodificar códigos de barras.
- La nueva función
@supports
de CSS proporciona detección de funciones para selectores CSS. - Las nuevas anotaciones ARIA admiten la accesibilidad del lector de pantalla para comentarios, sugerencias y textos destacados con significados semánticos (similar a
<mark>
). - La consulta de medios
prefers-color-scheme
permite a los autores admitir su propio tema oscuro para tener control total sobre las experiencias que crean. - JavaScript ahora admite módulos en trabajadores compartidos.
¿Quieres saber qué te espera en el futuro? Consulta el rastreador de la API de Fugu para averiguarlo.
Lecturas adicionales
Esto abarca solo algunos de los aspectos más destacados. Consulta los vínculos que aparecen a continuación para ver más cambios en Chrome 83.
- Novedades de las Herramientas para desarrolladores de Chrome (83)
- Bajas y eliminaciones de Chrome 83
- Actualizaciones de ChromeStatus.com para Chrome 83
- Novedades de JavaScript en Chrome 83
- Lista de cambios del repositorio de código fuente de Chromium
Suscribirse
Si quieres mantenerte al día con nuestros videos, suscríbete a nuestro canal de YouTube para desarrolladores de Chrome. Recibirás una notificación por correo electrónico cada vez que lancemos un video nuevo.
Soy Pete LePage y necesito cortarme el cabello, pero en cuanto se lance Chrome 84, estaré aquí para contarte las novedades de Chrome.