web-dev-qa-db-fra.com

IE8 ne prend pas en charge querySelectorAll

J'ai essayé d'utiliser document.querySelectorAll(), mais une erreur de lancement IE8,

L'objet ne prend pas en charge cette propriété ou méthode

var titleCheckBox = document.querySelectorAll("");

Ici http://www.quirksmode.org/dom/w3c_core.html#t1 écrit, qu'IE8 prend en charge cette méthode. Qu'est-ce que je fais mal?

29
Roman Makhlin

Vérifiez que votre page n'est pas en mode Quirks ou en mode de compatibilité. Vous pouvez utiliser les outils de développement F12 pour le confirmer. Appuyez sur F12 et regardez dans le coin supérieur droit de la fenêtre résultante. Si vous voyez "Compatibilité" ou "Quirks" dans la description du mode, alors vous avez trouvé le problème.

  • Quirks mode: ceci est généralement déclenché par un Doctype manquant ou cassé. Si tel est le cas, assurez-vous que votre page commence par ce qui suit:

    <!DOCTYPE html>
    
  • Mode de compatibilité (mode IE7): Cela peut être déclenché si vous affichez la page localement (c'est-à-dire en l'exécutant sur votre machine locale, par exemple pour les tests, ou sur votre réseau local). Dans ce cas, vous êtes frappé par un paramètre de configuration IE que vous devez désactiver. Accédez au menu Outils et choisissez l'option Paramètres d'affichage de la comaptibilité. Décochez les options de compatibilité et la page doit commencer à travailler.

    Le mode de compatibilité peut également être déclenché (ou évité) par un X-UA-Compatibility balise meta. Si vous rencontrez des problèmes avec le mode de compatibilité, c'est un bon moyen de l'éviter: ajoutez la ligne suivante à votre code:

    <meta http-equiv="X-UA-Compatible" content="IE=Edge">
    

L'un ou l'autre (ou les deux) de ce qui précède pourrait être le problème, mais je suppose que le problème est le mode de compatibilité. Le paramètre compat-mode-on-intranet-sites est étonnamment peu connu et surprend beaucoup de gens, même certains développeurs chevronnés.

50
Spudley

IE8 ne prend en charge que querySelectorAll() en mode standard. De MSDN :

L'API Selectors est définie dans le cadre de la spécification Selectors API et n'est disponible que pour les pages Web affichées en mode standard IE8.

Il y a de fortes chances que votre page ne dispose pas d'une déclaration DOCTYPE appropriée; vous devrez en ajouter un.

12
BoltClock