Heim  >  Artikel  >  Web-Frontend  >  Warum funktioniert forEach() bei querySelectorAll in neueren Microsoft-Browsern nicht?

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

Susan Sarandon
Susan SarandonOriginal
2024-10-20 06:44:02531Durchsuche

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>

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>

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!

Stellungnahme:
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