2011-10-01 6 views
2

MISE À JOUR: CELA A ÉTÉ RÉSOLU. J'essaye de changer le style par défaut d'un site Assistly par JavaScript, parce que la feuille de style n'est pas éditable par moi. Cela fonctionne bien dans Chrome, Safari, Opera et IE9; mais pas dans IE 6,7,8 ou tout Firefox.jQuery .css() ne fonctionne pas dans IE 6,7,8 et Firefox, mais fonctionne dans Chrome, Safari, Opera

Dans le code ci-dessous, les deux premières lignes qui définissent un h2 et une image fonctionnent sur tous les navigateurs, mais les lignes .css() ne le sont pas. Pourquoi .css() ne fonctionnerait pas dans certains navigateurs?

Voici le code.

<script type="text/javascript"> 
jQuery(document).ready(function(){ 
$("#support-header .wrapper h2").first().html('<h2>Real Estate Help</h2>'); 
$("#company-header .wrapper").html('<a href="http://help.mysite.com/"><img src="http://www.mysite.com/logo-red.png" /></a>'); 
$("body").css({'background': '#FFFFFF !important'}); 
$("#company-header").css({'background': 'none !important'}); 
$("#support-header").css({'background': 'none !important', 'border-bottom': 'none', 'padding': '0'}); 
$("#company-support-portal").css({'background-image': 'url(http://www.mysite.com/container-bg2.jpg) !important', 'background-repeat': 'repeat-x', 'margin-top': '10px'}); 
}); 
</script> 
+0

lien au site s'il vous plaît? –

+2

Ces espaces doivent-ils être présents dans le nom de fichier? Et qu'en est-il de tous ces "importants"? – GolezTrol

+1

[SSCCE] (http://sscce.org) s'il vous plaît. –

Répondre

0

Dans IE, il fonctionne bien utiliser

element.css('property', 'value') 

Même si vous avez besoin alors une ligne distincte pour chaque propriété.

Remarque: vous pouvez spécifier importante facilement avec

$.('#elid').css('display', 'block !important') 
2

Retirez !important du code. !important ne doit être utilisé que dans les feuilles de style, et non dans les attributs en ligne.

+0

En les supprimant, le javascript ne fonctionne plus dans les navigateurs. – kfawcett

+2

@kfawcett - c'est parce que vous avez sérieusement surutilisé '! Important' dans vos feuilles de style. «! important» devrait être considéré comme un outil de dernier recours. – Spudley

4

Je vais ajouter à ce que d'autres ont dit: Je soupçonne que le problème peut être lié au drapeau !important.

La question est pourquoi avez-vous besoin? Vous définissez ceci sur un style en ligne, de sorte que cela devrait remplacer tous les autres styles de toute façon; la seule chose qui ne sera pas annulée par défaut sur un style en ligne est un autre style qui est marqué !important, donc je suppose que c'est ce que vous essayez de faire. Le problème est que dès que vous utilisez !important, vous dites essentiellement au navigateur que ce style devrait l'emporter sur tout le reste; l'héritage et la préséance sortent de la fenêtre.

Si vous avez plusieurs styles !important sur le même élément, les deux auront la même priorité, donc vous ne pouvez jamais vraiment être sûr de ce qui va se passer. Certains navigateurs en récupèrent un, d'autres l'autre. La véritable leçon à tirer de ceci est d'éviter d'utiliser !important dans vos feuilles de style, à moins que ce soit absolument inévitable, et certainement l'éviter pour tout ce que vous voudrez ensuite remplacer.

En raison de la manière dont CSS classe les choses par ordre de priorité et d'héritage, il y a en fait très peu de cas où !important est réellement nécessaire. Il y a presque toujours une alternative (meilleure) façon de le faire.

Donc, la réponse courte: Re-travailler vos feuilles de style pour se débarrasser des marqueurs !important. Votre code jQuery ne va pas fonctionner correctement jusqu'à ce que vous le fassiez (et en fait, en regardant le nombre de marqueurs !important sur votre site, votre CSS peut déjà avoir du mal à faire les choses comme il est)

+0

Spudley comme je l'ai dit dans d'autres commentaires. Je ne peux pas enlever le! Important dans la feuille de style! Il ne m'appartient pas, il appartient à Assistly. Donc la question est .... ** comment puis-je supprimer les styles dans la feuille de style qui est inéditable par moi? ** Je suis tombé sur ce site, mais je n'ai pas réussi à l'obtenir travail. http://www.hunlock.com/blogs/Totally_Pwn_CSS_with_Javascript Des idées sur la façon de supprimer le CSS qui est dans une feuille de style qui n'est pas éditable par moi et ajouter mes propres styles à travers Javascript? – kfawcett

+0

@kfawcett - la façon dont '! Important' est utilisé dans les feuilles de style est un code de qualité médiocre, ce qui se répercute mal sur Assistly. Si possible, je suggérerais de trouver un moyen de remplacer cette feuille de style, car c'est la racine de tous vos problèmes. Avec autant de «! Important», cela entravera gravement votre capacité à ajuster l'apparence de votre site. Le piratage peut aider, mais cela ne résoudra pas le problème à long terme. Si vous êtes en mesure d'ajouter du code Javascript, alors vous pouvez changer le modèle de la page? Changez simplement l'URL CSS et chargez vos propres styles à la place. – Spudley

+0

Après avoir examiné le code, les styles sont internes, pas dans une feuille de style externe. Comment puis-je les modifier via JavaScript ou jQuery? – kfawcett

Questions connexes