Chrome 72 est disponible en version bêta et apporte les champs de classe publique,
ainsi qu'une API de requête d'activation utilisateur

Champs de classe publique

Chrome permet maintenant la déclaration des champs de classe publique dans les scripts. Ceci est la première partie des déclarations de champ de classe en JavaScript; le support pour les champs de classe privée arrive bientôt

Pour implémenter des champs de classe publique, il faut faire une déclaration de classe en dehors de toute fonction membre. Elles peuvent être soit initialisés, soit non initialisés. Par exemple, au lieu de ceci:

Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
class MyComponent extends Component {
  constructor() {
    super();
    this.state = {};
  }
  render() {
    doStuff(this.state);
  }
}

vous pourrez écrire ceci :

Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
class MyComponent extends Component {
  // Create a public field named `state`.
  state = {};
  render() {
    doStuff(this.state);
  }
}

API de requête d'activation utilisateur

Chrome fournit désormais une API permettant de savoir s'il y a eu activation de l'utilisateur. Ceci est utile pour les API délibérément restreintes afin d'éviter des comportements de page Web gênants. Les exemples incluent requestFullScreen (), autoplay et window.open (). Cela permet également aux iframes incorporés d’examiner les appels postMessage () afin de déterminer s’ils se sont produits dans le contexte d’une activation de l’utilisateur.

La nouvelle propriété userActivation, disponible à la fois dans navigator et dans MessageEvent, prend en charge les propriétés suivantes:
  • hasBeenActive: Indique si la fenêtre associée a déjà vu une activation d'utilisateur au cours de son cycle de vie. Cette propriété ne reflète pas si la tâche en cours a été déclenchée par une activation de l'utilisateur.
  • isActive: Indique si la fenêtre associée a actuellement une activation utilisateur dans son cycle de vie.

La méthode postMessage () utilise également un argument d'options pour les objets Window, Worker et MessagePort. Cet objet englobe les arguments existants et ajoute la propriété booléenne includeUserActivation pour informer le destinataire du message qu'il y a eu activation de l'utilisateur.

L'exemple suivant montre comment un iframe avertirait un parent de l'activation d'un utilisateur.

Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
// Check that WindowPostOptions is supported
if (window.parent.postMessage.length === 1) {
  window.parent.postMessage('resize', {includeUserActivation: true});
} else {
  window.parent.postMessage('resize', '/');
}

Le parent pourrait alors vérifier que l'activation est toujours active avant d'y répondre.

Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
if (event.userActivation && event.userActivation.isActive) {
    return Promise.resolve();
}

Autres fonctionnalités apportées par cette version

L'API Cache rejette addAll () lorsque les demandes pourraient se surcharger l'une l'autre

L'API Cache.prototype.addAll (), qui permet l'ajout simultané de plusieurs entrées au cache, violait auparavant l'obligation de spécification selon laquelle chaque paire requête / réponse évite de remplacer une autre entrée lors du même appel. Chrome résolvait de tels conflits en stockant l'entrée la plus récente et en ignorant l'entrée précédente. Cache.prototype.addAll () rejette maintenant avec une InvalidStateError.

Intl.ListFormat

Intl.ListFormat ()

Cette méthode aide les bibliothèques et les frameworks à formater une liste de manière localisée en fournissant des messages internationalisés utilisant un mot ou une expression locale habituelle, le cas échéant. Voici un exemple:

Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
const lf = new Intl.ListFormat('en');
lf.format(['dogs']);
// → 'dogs'
lf.format(['dogs', 'cats']);
// → 'dogs and cats'
lf.format(['dogs', 'cats', 'hamsters']);
// → 'dogs, cats, and hamsters'

Amélioration au niveau de Service Worker

Un Service Worker est un script chargé parallèlement aux scripts de votre page et qui va s'exécuter en dehors du contexte de votre page web. Bien que le Service Worker n'ait pas accès au DOM ou aux interactions avec l'utilisateur, il va pouvoir communiquer avec vos scripts via l'API postMessage. Il se place en proxy de votre Web App, interceptant toutes les requêtes serveur et propose par exemple d'y répondre avec un cache ou en récupérant des données du LocalStorage ou d'IndexedDB. Il rend donc votre application disponible offline.

Les service workers jouent donc essentiellement le rôle de serveurs proxy placés entre une application web, et le navigateur ou le réseau (lorsque disponible.) Ils sont destinés (entre autres choses) à permettre la création d'expériences de navigation déconnectée efficaces, en interceptant les requêtes réseau et en effectuant des actions appropriées selon que le réseau est disponible et que des ressources mises à jour sont à disposition sur le serveur. Ils permettront aussi d'accéder aux APIs de notifications du serveur (push) et de synchronisation en arrière-plan.

Nom : service worker.png
Affichages : 2654
Taille : 83,1 Ko

FetchEvent.resultingClientId

Défini sur les demandes de navigation ou les demandes de Worker, il correspond à l’ID du client, document ou Worker, et est créé par la demande. Il est utile pour associer la demande de ressource principale d'un document aux demandes de sous-ressource suivantes du même document, par exemple, à des fins de journalisation et de métriques.

FetchEvents sur les demandes de favicons de même origine.

Auparavant, des limitations techniques empêchaient les services Worker de recevoir des objets FetchEvent pour les demandes de favicon. Désormais, les services workers recevront des objets FetchEvent tant que l'URL de la demande se trouve sur la même origine que l'agent de service.

Source : Google

Voir aussi :

Chrome se prépare à mettre fin au hijacking du bouton Retour, le navigateur va bientôt ignorer les redirections louches
Le nouveau Microsoft Edge va prendre en charge les extensions Chrome, grâce au passage à Chromium pour le développement du navigateur
Des sites malveillants se servent d'un bogue vieux de 11 ans sur Firefox, qui a déjà été corrigé sur Chrome et le navigateur de Microsoft
Microsoft travaille sur une alternative à Chrome OS, le système d'exploitation des Chromebooks et pourrait ne pas intégrer « Windows » à son nom
Google déploie progressivement Chrome 71 qui met un accent sur la sécurité des utilisateurs, et l'amélioration de leur expérience de navigation