Question

Supposons que vous ayez une page avec un doctype relativement strict et un balisage HTML assez proche de la conformité, mais manquant peut-être de manière idiote, peut-être à cause du contenu utilisateur qui est hors de votre contrôle ... disons que vous travaillez sur un système de gestion de contenu ou un thème pour un système de gestion de contenu dans lequel vous contrôlez une structure de base et avez besoin de JavaScript, mais vous n’êtes pas responsable de tout ce qui reste dans les pages.

Comment pouvez-vous savoir (ou: que déterminera-t-il) quand le navigateur décide d'aller dans " quirks " mode plutôt que d'utiliser c'est un moteur plus conforme aux normes?

Je cherche des réponses pour chacun des principaux navigateurs, car IE, Chrome, Safari et Firefox seront évidemment tous traités différemment. Une seule erreur suffit-elle pour la forcer ou avez-vous une marge de manœuvre?

Était-ce utile?

La solution

Dans Firefox et Opera , vous pouvez déterminer si votre navigateur est en mode " excentrique " en vérifiant les informations de la page.

L'utilisation de document.compatMode vous indiquera le mode dans lequel vous vous trouvez avec la plupart des navigateurs.

Dans Chrome, Safari et IE , exécutez ce javascript dans la barre d'adresse:

 javascript:window.alert('You are in ' + (document.compatMode==='CSS1Compat'?'Standards':'Quirks') + ' mode.')

(notez que vous devrez ressaisir la partie javascript: après le collage dans votre barre d'adresses, en raison de modifications récentes apportées à la sécurité)

Autres conseils

Comme vous pouvez interroger le mode de rendu en JavaScript, vous pouvez avoir un Bookmarklet qui vous indiquera le mode de rendu utilisé par une page.

J'ai trouvé ce bookmarklet en mode de rendu . ce qui fonctionne bien pour moi:

javascript:m=(document.compatMode=='CSS1Compat')?'Standards':'Quirks';window.alert('You%20are%20in%20'%20+%20m%20+%20'%20mode.');

La réponse complète à votre question précise: "Une seule erreur suffit-elle pour la forcer ou avez-vous une marge de manœuvre?" est-ce que cela dépend totalement de l'erreur. Par exemple,

<!-- Comment -->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

forcera le mode quirks dans IE 6 & amp; 7 malgré une erreur pas vraiment (ils jettent un total wobbly quand la toute première ligne du fichier n'est pas une déclaration). Vous pouvez trouver une liste rapide des types / bizarreries

Essayez de coller la ligne suivante dans votre code HTML pour le tester (très mauvais code javascript que je vous transmets ici - désolé ... assurez-vous que cela ne se réalise jamais:)

<a href="javascript:alert(document.compatMode);">What mode am I?</a>

Selon http://www.quirksmode.org/css/quirksmode.html: "Le problème était que certaines pages écrites en mode quirks avaient des doctypes. Par conséquent, chaque navigateur a sa propre liste de doctypes qui déclenchent le mode quirks. Consultez ce tableau de comparaison des navigateurs pour obtenir un aperçu de ces listes: http://hsivonen.iki.fi/doctype/ < "

J'espère que cela vous aidera

Si vous dites à IE qu'il doit être strict (via doctype), il ne changera pas d'avis au milieu de la page.

Si je comprends bien le mode quirks, une page qui ne se valide pas par rapport à son type de document déclaré ne suffit pas pour déclencher le mode quirks. Cela ne s'affichera pas correctement.

La meilleure ressource que j'ai trouvée pour déterminer comment différents navigateurs traitent chaque type de document est ici .

Pour Firefox avec l’ajout de Web Developer Toolbar, vous pouvez consulter le trio d’icônes situé à droite de la barre. Le plus à gauche vous indique le mode dans lequel vous vous trouvez.

Dans IE, vous le verrez dans les outils de développement (en appuyant sur F12), il est indiqué dans le menu: Mode document: ... Et vous pouvez également y forcer un autre mode.

sur la page html5, écrivez " <! DOCTYPE html > ". commencer par la page peut changer à document.compatMode = 'CSS1Compat'

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top