2010-08-19 4 views
0

J'essaie de définir une expression css pour un attribut pour un élément comme suit.

var scrollTopExpr = '$(document).scrollTop()'; 
var expr = "expression(eval(" + scrollTopExpr + "))"; 
$(this).css("top", expr); 

Mais j'obtiens "Invalid Argument" comme une erreur. Des idées?

+0

Dans quel navigateur est-ce? Les expressions CSS sont uniquement prises en charge par IE et dans IE8 uniquement en mode de comptabilisation, car elles sont considérées comme obsolètes par Microsoft. – RoToRa

+0

J'essaie de faire la position fixe et j'essaye de soutenir IE6 + FF 2.0+. Mais IE7 et IE8 ne supporte pas la postion: fixé sans doctype. Je fais un produit d'addon pour un système de CMS où je ne peux pas donner mon propre doctype. Comment puis-je le faire alors? – NLV

+1

Il serait utile que les downvoters passent quelques minutes à expliquer la raison de la downvote. – NLV

Répondre

2

Les expressions ont été dépréciées et supprimées dans IE8 (sauf si vous êtes en mode de compatibilité). Ils sont également des porcs de performance et vous devriez rester loin d'eux si vous le pouvez, en utilisant JavaScript à la place.

Vous n'avez pas besoin d'utiliser eval() intérieur expression(), et c'est ce qui cause votre erreur. eval() attend une chaîne, mais vous lui transmettez le résultat d'une variable, qui est un Numéro. Sortez eval():

"expression(" + scrollTopExpr + ")"; 

évalue déjà l'expression que vous passez à elle, l'expression () si eval() est tout à fait inutile.