J'ai parcouru toutes les bibliothèques js populaires, mais je ne peux pas en trouver une qui a une fonction de largeur pour un élément DOM qui prend en compte le mode quirks dans Internet Explorer. Le problème est que le remplissage et les bordures ne sont pas comptabilisés dans la largeur lorsque le mode quirks est activé. Autant que je sache, cela arrive quand le doctype est omis ou que le doctype est défini sur html 3.2.Largeur d'un élément représentant le mode quirks en javascript?
De toute évidence, je pouvais simplement définir le doctype sur quelque chose conforme aux normes, mais ce script peut être intégré n'importe où, donc je n'ai pas de contrôle sur le doctype.
Pour décomposer le problème en parties plus petites:
1) Comment détectez-vous mode bizarreries? 2) Quelle est la meilleure façon d'extraire la bordure et le rembourrage d'un élément pour compenser?
Exemple avec prototype:
<html>
<head>
</head>
<body>
<div id="mydiv" style="width: 250px; pading-left: 1px; border: 2px black solid">hello</div>
<script>
alert($('mydiv').getWidth())
</script>
</body>
</html>
Résultat:
253 (ff) 250 (par exemple)
Merci à l'avance!
où provient l'attribut currentStyle de? Je l'essaie en ff et il semble être indéfini – christoff
currentStyle est la version d'IE de getComputedStyle(). Il renvoie la valeur réelle de la propriété CSS donnée. Vous pouvez en lire plus dans l'article de PPK: http://www.quirksmode.org/dom/getstyles.html – pawel
Avec Prototype, vous pouvez également utiliser Element.getStyle(). –