2010-11-20 1 views
3

J'ai trouvé le besoin d'extraire le style d'ensemble d'un élément dans un navigateur (fait par l'utilisateur). Je dois pouvoir travailler avec les styles récupérés sur mon serveur (javascript côté serveur et jQuery). Maintenant, le problème est que de nombreux navigateurs semblent utiliser leurs propres conventions de nommage ou aiment séparer les raccourcis aux éléments individuels, tandis que d'autres ne le font pas.Comment obtenir une chaîne de style littéral entre navigateurs avec JavaScript?

Une solution pour moi serait d'obtenir la chaîne littérale d'un élément (les styles des feuilles de style ne doivent pas être pris en compte). Dans Firefox/Chrome cela fonctionnerait:

node.getAttribute('style') 

Malheureusement, cela n'est pas possible dans Internet Explorer 5/6/7. Je me suis dit que ce serait une solution:

function getStyleStr(node) { 
    return typeof(node.getAttribute('style')) !== 'string' ? node.style.cssText : node.getAttribute('style'); 
} 

http://jsfiddle.net/8p5BN/6/

Malheureusement, node.style.cssText ne retourne pas la chaîne littérale comme décrit ici: http://javascript.gakaa.com/style-csstext.aspx

Y at-il une meilleure façon de détecter la définir le style d'un élément de manière croisée avec les mêmes noms?

+0

Juste curieux: Pourquoi essayez-vous de faire cela? – thejh

+0

Longue histoire, fondamentalement, j'ai besoin de calculer une structure hiérarchique arborescente basée sur les attributs (y compris les styles) qui peuvent ensuite être utilisés par mon serveur. – Tom

+0

@Tom: Et pour quoi voulez-vous l'utiliser sur votre serveur? – thejh

Répondre

3

http://upshots.org/?p=112

Vous aurez besoin d'accéder au style calculé et ou le style actuel de l'élément dom. Cela devrait vous donner tout ce dont vous avez besoin et il prendra en considération toutes les formes de styles (inline, déclaré css & propriétés héritées)

Questions connexes