2010-07-14 6 views
2

J'ai simplifié un problème que j'ai rencontré dans Firefox (le code original est généré par les contrôles côté serveur). Ouvrez l'extrait suivant dans IE et Firefox:Firefox appliquant le style au bloc de script

<html> 
<style> 
    .AllInline, .AllInline * { display: inline; } 
</style> 
<span class="AllInline"> 
    Test 
    <script type="text/javascript"> 
     <!-- var obj = {}; //--> 
    </script> 
</span> 
</html> 

Dans IE, je reçois:
test
Alors que dans Firefox, je reçois:
test <!-- var obj = {}; //-->

Le contenu du bloc de script devient visible en quelque sorte.

Je ne m'attendais pas à ce que les règles de style soient appliquées aux blocs de script (on ne peut pas vraiment voir pourquoi on voudrait ça non plus).

Quelqu'un aurait-il une explication?

+0

Comment exactement se comporte-t-il dans Firefox? – mcandre

+0

J'ai ajouté les résultats que je reçois. – Locksfree

+0

Chrome se comporte comme FireFox – Yisroel

Répondre

1

base, basefont, datalist, head, meta, script, style, title, noembed et param balises sont cachés par le simple fait de mettre display: none; dans html.css (qui est un UA stylesheet). Donc ils sont sujets à être cachés par page CSS comme votre exemple. area d'autre part a display: none ! important; car il a une gestion interne spéciale (l'image possède effectivement la zone).

0

Ne placez pas de JavaScript ici. Insérez-le juste avant </body></html>. Testez votre HTMl dans le Echochamber.

+0

Ceci est seulement un court échantillon de reproduction. Je ne mettrais pas les js ici non plus si je l'écrivais. Cela vient d'un feu croisé entre le style et ce que rend un contrôle DevExpress. – Locksfree

0

bug fascinant! Vous pouvez ajouter .AllInline script {display: none;} à votre CSS pour le cacher.

+0

Suppression du second sélecteur .AllInline * fonctionne également. Je ne comprends toujours pas pourquoi quelqu'un voudrait ça ... – Locksfree

Questions connexes