Compatibilité de document.getElementsByClassName dans IE
Internet Explorer présente un défi lorsque vous tentez de récupérer un tableau d'éléments avec une classe spécifique à l'aide de document .getElementsByClassName(). Pour surmonter cette limitation, une solution personnalisée est nécessaire.
Méthode de Jonathan Snook
Une approche pour émuler document.getElementsByClassName() dans IE consiste à utiliser la fonction de Jonathan Snook, qui parcourt tous les éléments d'un nœud à l'aide de getElementsByTagName(*) et les filtre en fonction de la présence de la classe souhaitée.
Incompatibilité IE
Malgré la mise en œuvre de la solution de Snook, un Une erreur peut toujours se produire dans IE indiquant : "L'objet ne prend pas en charge cette propriété ou cette méthode." En effet, getElementsByClassName() n'est pas une méthode directe de l'objet document dans IE.
Implémentation corrigée
L'implémentation correcte de la fonction de Snook nécessite de spécifier explicitement le nœud cible. :
var tabs = getElementsByClassName(document.body, 'tab');
Support IE8
Pour IE8 et les versions ultérieures, une approche simplifiée peut être utilisée :
if (!document.getElementsByClassName) { document.getElementsByClassName = function(className) { return this.querySelectorAll("." + className); }; Element.prototype.getElementsByClassName = document.getElementsByClassName; }
Cet extrait de code définit getElementsByClassName() comme méthode de l'objet document et le rend également disponible pour les éléments individuels via Element.prototype.getElementsByClassName().
Utilisation
Une fois implémenté, le La méthode getElementsByClassName() peut être utilisée comme suit :
var tabs = document.getElementsByClassName('tab');
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!