Heim > Web-Frontend > js-Tutorial > Hauptteil

Warum funktioniert forEach() bei querySelectorAll in neueren Microsoft-Browsern nicht?

Susan Sarandon
Freigeben: 2024-10-20 06:44:02
Original
528 Leute haben es durchsucht

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

forEach auf querySelectorAll funktioniert in neueren Microsoft-Browsern nicht

Bei der Methode forEach() treten trotz ihrer weit verbreiteten Unterstützung einige Probleme auf, wenn sie mit querySelectorAll in neueren Internetversionen verwendet wird Explorer (11) und Edge.

Verstehen des Problems

NodeList und HTMLCollection, bei denen es sich um Sammlungen handelt, die übereinstimmende DOM-Elemente darstellen, fehlt in älteren Microsoft-Browsern nativ die Methode forEach(). Diese Sammlungen sind jedoch iterierbar und ermöglichen ein Durchlaufen mit alternativen Methoden wie for-of.

Lösung des Problems

Polyfilling forEach()

Sie können die forEach()-Methode manuell zu NodeList und HTMLCollection in Browsern hinzufügen, die sie nicht nativ unterstützen. Dies ist eine einfache und effektive Lösung:

<code class="javascript">if (typeof NodeList !== "undefined" &amp;&amp; NodeList.prototype &amp;&amp; !NodeList.prototype.forEach) {
  NodeList.prototype.forEach = Array.prototype.forEach;
}</code>
Nach dem Login kopieren

Polyfilling-Iterabilität

Wenn ein Browser über ES2015-Funktionen verfügt, aber immer noch über keine NodeList-Iterabilität verfügt, können Sie auch diese polyfillen:

<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>
Nach dem Login kopieren

Fazit

Durch Polyfilling forEach() und Iterabilität können Sie die Einschränkungen älterer Microsoft-Browser überwinden und ein konsistentes Verhalten Ihres Codes sicherstellen, wenn Sie mit NodeList- und HTMLCollection-Sammlungen arbeiten.

Das obige ist der detaillierte Inhalt vonWarum funktioniert forEach() bei querySelectorAll in neueren Microsoft-Browsern nicht?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!