2010-01-13 4 views
2

Existe-t-il un moyen simple de parcourir le navigateur pour obtenir le style calculé d'un élément dans PrototypeJS, sans vérifier document.defaultView ... et d'autres propriétés? ... de sorte que le code ressemblaitSimple getComputedStyle dans Prototype JS?

var elt = $$('.xyz')[k], 
    border = elt.getComputedStyle('border-bottom-width') 

prototypejs fournit getDimensions, -Width et -Height méthodes qui renvoient calculées dimensions, mais il n'y a pas moyen d'obtenir d'autres styles calculés, comme les frontières, les arrière-plans, etc.

J'ai trouvé plusieurs implementations autonomes de getComputedStyle, mais peut-être y a-t-il un patch/plugin pour PrototypeJS?

Répondre

4

méthode de Prototype getStyle encapsule la plupart des travaux de style calculé cross-browser vous cherchez:

var bgColor = $(element).getStyle('background-color'); 

De la documentation:

Cette méthode recherche la propriété CSS d'un élément s'il a été appliqué en ligne ou dans une feuille de style. Il fonctionne autour de navigateur incohérences concernant flotteur, l'opacité, qui renvoie une valeur comprise entre 0 (entièrement transparent) et 1 (entièrement opaque), propriétés de position (à gauche, en haut, à droite et en bas) et lors de l'obtention des dimensions (largeur ou hauteur) des éléments cachés .

Cependant, cette méthode ne retourne pas les styles appliqués dans une feuille de style dans Internet Explorer < = 8, car il utilise la méthode getComputedStyle(), qui est la méthode incorrecte pour les versions 8 et inférieure: http://www.quirksmode.org/dom/w3c_css.html

+1

Mais il retourne seulement le style en ligne. –

+1

@culebron: Non, il renvoie le style calculé, incorporant ceux définis dans les feuilles de style. Vérifiez la source vous-même: http://prototypejs.org/assets/2009/8/31/prototype.js (recherchez getStyle). Vous trouverez 'getComputedStyle' juste là. – JPot

+0

Mais ce n'est pas navigateur complet, IE <= 8 nécessite .currentStyle, pas .getComputedStyle(). Vérifiez-vous: http://www.quirksmode.org/dom/w3c_css.html –

1

Pas que je sache. Ceci est probablement dû au fait que les implémentations du "get computed style" sont si différentes qu'il n'est guère possible de garantir des résultats uniformes (ce qui les rend inutiles pour un framework cross-browser).

Par exemple, obtenir la taille de la police calculée cross-browser n'est pas toujours possible, comme je l'ai appris dans this question.

+0

Yep , Je l'ai vu. Cette question montre dans la première page supérieure quand googling pour "prototype js obtiennent le style calculé" –

+0

La plupart (toutes?) Bibliothèques js ont une fonction pour obtenir le style calculé/actuel pour une propriété particulière. Voir ma réponse pour le prototype. – JPot

Questions connexes