Chrome 83 comienza a lanzarse en la versión estable.
Tenga en cuenta lo siguiente:
- Los tipos de confianza ayudan a evitar vulnerabilidades de secuencias de comandos entre sitios.
- Los elementos de formulario tienen un importante rediseño.
- Hay una nueva forma de detectar fugas de memoria.
- La API del sistema de archivos nativo inicia una nueva prueba de origen con funcionalidad agregada.
- Hay nuevas políticas de origen cruzado.
- Presentamos el programa Métricas web para brindar orientación unificada sobre los indicadores de calidad que, según nuestra perspectiva, son fundamentales para brindar una excelente experiencia del usuario en la Web.
- Y mucho más.
Soy Pete LePage, trabajo y grabo desde casa. ¡Comencemos y 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 de la Web. Puede ser fácil introducir uno por accidente en tu página. Los tipos de confianza pueden ayudar a evitar este tipo de vulnerabilidades, ya que requieren que proceses los datos antes de pasarlos a una función potencialmente peligrosa.
Tomemos innerHTML
como ejemplo. Si intento pasar una cadena con los tipos de confianza activados, 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 su lugar, 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, te recomendamos que identifiques y corrijas cualquier incumplimiento con un encabezado CSP report-only
.
Content-Security-Policy-Report-Only: require-trusted-types-for 'script'; report-uri //example.com
Una vez que hayas terminado, puedes encenderlo correctamente. Los detalles completos se encuentran en Cómo evitar vulnerabilidades de secuencias de comandos entre sitios basadas en DOM con Trusted Types, en web.dev.
Actualizaciones de los controles de formularios
Usamos controles de formulario HTML todos los días, y son clave para gran parte de la interactividad de la Web. Son fáciles de usar, tienen accesibilidad integrada y son familiares para nuestros usuarios. El diseño de los controles de formulario puede ser incoherente entre navegadores y sistemas operativos. Además, con frecuencia, debemos enviar una serie de reglas de CSS solo para obtener un aspecto coherente en todos los dispositivos.
Me impresiona mucho el trabajo que ha hecho Microsoft para modernizar la apariencia de los controles de formularios. Más allá de un estilo visual más agradable, ofrecen una mejor compatibilidad táctil y una mejor accesibilidad, incluida una compatibilidad con teclado.
Los nuevos controles de formularios ya están disponibles en 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 API nueva que permite medir el uso de memoria de tu página y detectar fugas de memoria.
Las fugas de memoria son fáciles de introducir:
- Olvidar anular el registro de un objeto de escucha de eventos
- Captura objetos de un iframe
- No cerrar un trabajador
- Acumulación de objetos en arrays
- y así sucesivamente.
Las fugas de memoria hacen que las páginas aparezcan lentas y sobrecargadas 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 nueva API.
Actualizaciones de la API del sistema de archivos nativo
La API de Native File System inició una nueva prueba de origen en Chrome 83 con compatibilidad con flujos de 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.
}
Los flujos de escritura facilitan mucho la escritura en un archivo y, como se trata de un flujo, puedes canalizar respuestas de un flujo a otro con facilidad.
Guardar controladores de archivos en IndexedDB te permite almacenar el estado o recordar en qué archivos estaba trabajando un usuario. Por ejemplo, mantener una lista de archivos modificados recientemente, abrir el último archivo en el que el usuario estaba trabajando, etcétera.
Necesitarás un nuevo token de prueba de origen para usar estas funciones, así que consulta mi artículo actualizado La API de Native File System: Simplifica el acceso a los archivos locales en web.dev con todos los detalles y cómo obtener tu nuevo token de prueba de origen.
Otras pruebas de origen
Consulta una lista completa de las funciones de 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 aceptación que se denomina aislado de origen cruzado. El estado aislado de origen cruzado también evita modificaciones de document.domain
. Poder alterar document.domain
permite la comunicación entre documentos del mismo sitio y se considera un resquicio en la política de mismo origen.
Consulta la publicación de Eiji Cómo hacer que tu sitio web sea "aislado de varios orígenes" con COOP y COEP para obtener detalles completos.
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 del contexto, existe un conjunto común de indicadores, las "Métricas web esenciales", que son fundamentales para todas las experiencias web. Estas necesidades básicas de la experiencia del usuario incluyen la experiencia de carga, la interactividad y la estabilidad visual del contenido de la página, y, en conjunto, son 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.
- Retraso de primera entrada mide la capacidad de respuesta y cuantifica la experiencia que los usuarios sienten cuando intentan interactuar con la página por primera vez.
- El 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 tienen equivalentes de métricas y herramientas de diagnóstico de lab compatibles. Por ejemplo, aunque Largest Contentful Paint es la métrica de carga principal, también depende en gran medida del primer procesamiento de imagen con contenido (FCP) y del tiempo hasta el primer byte (TTFB), que siguen siendo fundamentales para supervisar y mejorar.
Para obtener más información, consulta Presentamos las métricas web: métricas esenciales para un sitio saludable en el blog de Chromium y obtén todos los detalles.
Y mucho más
- Chrome ahora admite la API de detección de códigos de barras, que brinda la capacidad de detectar y decodificar códigos de barras.
- La nueva función
@supports
de CSS proporciona detección de atributos para los selectores CSS. - Las nuevas anotaciones ARIA admiten la accesibilidad de los lectores de pantalla para comentarios, sugerencias y textos destacados con significados semánticos (similares a
<mark>
). - La consulta de medios
prefers-color-scheme
les permite a los autores admitir su propio tema oscuro para que tengan el control total sobre las experiencias que compilan. - JavaScript ahora admite módulos en trabajadores compartidos.
¿Quieres saber qué se viene en el futuro? Consulta Seguimiento de la API de Fugu para obtener más información.
Lecturas adicionales
Esto solo abarca algunos de los aspectos más destacados. Consulta los vínculos que aparecen a continuación para ver los cambios adicionales en Chrome 83.
- Novedades de las Herramientas para desarrolladores de Chrome (83)
- Depresiones 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 tanto de nuestros videos, suscríbete a nuestro canal de YouTube de Desarrolladores de Chrome y recibirás una notificación por correo electrónico cada vez que lancemos un video nuevo.
Soy Pete LePage y necesito un corte de pelo, pero en cuanto se lance Chrome 84, estaré aquí para contarte las novedades de Chrome.