Maison > interface Web > js tutoriel > le corps du texte

Pourquoi forEach() ne fonctionne-t-il pas sur querySelectorAll dans les navigateurs Microsoft récents ?

Susan Sarandon
Libérer: 2024-10-20 06:44:02
original
528 Les gens l'ont consulté

Why doesn't forEach() work on querySelectorAll in recent Microsoft browsers?

forEach sur querySelectorAll ne fonctionne pas dans les navigateurs Microsoft récents

La méthode forEach(), malgré son support généralisé, rencontre certains problèmes lorsqu'elle est utilisée avec querySelectorAll dans les versions récentes d'Internet Explorer (11) et Edge.

Comprendre le problème

NodeList et HTMLCollection, qui sont des collections représentant des éléments DOM correspondants, ne disposent pas de la méthode forEach() de manière native dans les anciens navigateurs Microsoft. Ces collections, cependant, sont itérables, ce qui permet de les parcourir en boucle à l'aide de méthodes alternatives telles que for-of.

Résoudre le problème

Polyfilling forEach()

Vous pouvez ajouter manuellement la méthode forEach() à NodeList et HTMLCollection dans les navigateurs qui ne la prennent pas en charge nativement. Il s'agit d'une solution simple et efficace :

<code class="javascript">if (typeof NodeList !== "undefined" &amp;&amp; NodeList.prototype &amp;&amp; !NodeList.prototype.forEach) {
  NodeList.prototype.forEach = Array.prototype.forEach;
}</code>
Copier après la connexion

Itérabilité du polyfilling

Si un navigateur possède des fonctionnalités ES2015 mais ne dispose toujours pas de l'itérabilité NodeList, vous pouvez également le polyfill :

<code class="javascript">if (typeof Symbol !== "undefined" &amp;&amp; Symbol.iterator &amp;&amp; typeof NodeList !== "undefined" &amp;&amp; NodeList.prototype &amp;&amp; !NodeList.prototype[Symbol.iterator]) {
  Object.defineProperty(NodeList.prototype, Symbol.iterator, {
    value: Array.prototype[Symbol.iterator],
    writable: true,
    configurable: true
  });
}</code>
Copier après la connexion

Conclusion

En polyfilling forEach() et itérabilité, vous pouvez surmonter les limitations des anciens navigateurs Microsoft et garantir un comportement cohérent de votre code lorsque vous travaillez avec les collections NodeList et HTMLCollection.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!