Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript > Bibliothèques & Frameworks > jQuery
jQuery Forum d'entraide sur le framework jQuery. Avant de poster : Tutoriels jQuery, FAQ jQuery, Tous les tutoriels JavaScript, Toutes les FAQ JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/08/2011, 16h30   #1
Membre éclairé
 
Avatar de Satch
 
Inscription : mars 2004
Messages : 448
Détails du profil
Informations personnelles :
Âge : 30

Informations forums :
Inscription : mars 2004
Messages : 448
Points : 381
Points : 381
Envoyer un message via MSN à Satch
Par défaut Encore et toujours souci de transparence avec IE

Bonjour tout le monde,

Je viens de rencontrer un problème avec IE8 que j'ai essayé de simplifier au maximum pour vous le soumettre.

J'utilise jQuery 1.6.2.

J'ai un plugin foo() qui prend le texte de l'élément pour l'encadrer par des spans, puis qui masque ces spans avec l'opacité à 0.

Je précise que c'est une version très (très) simplifiée de ce que je cherche à faire et que j'ai besoin des spans et de l'opacité.

Ceci fonctionne très bien sous FF mais IE 8 refuse de me masquer ce texte.

Voici l'exemple complet qui permet de tester :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Document sans nom</title>
<script type="text/javascript" src="../scripts/jquery/jquery-1.6.1.min.js"></script>
<script type="text/javascript">
(function($) {
	$.fn.foo = function() {
		var texte = $(this).html();
		texte = "<span>"+texte+"</span>";
		$(this).html(texte);
 
		$('span').css('opacity','0');
 
	};
 
})(jQuery);
 
 
$(document).ready(function(){
	$('p').foo();
});
</script>
 
</head>
 
<body>
	<p>IE SUCKS</p>
</body>
</html>
Comment contourner ceci ?
Je ne veux pas de visibility:hidden ou de display:none.
__________________
Je sais que désormais vivre est un calembour,
La mort est devenue un état permanent,
Le monde est aux fantômes, aux hyènes et aux vautours.
Moi je vous dis bravo et vive la mort.
Satch est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/08/2011, 16h37   #2
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 807
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2008
Messages : 13 807
Points : 35 797
Points : 35 797
Code :
1
2
3
var texte = $(this).html();
texte = "<span>"+texte+"</span>";
$(this).html(texte);
Je te conseillerais plutôt
Code :
1
2
var texte = $(this).html();
texte.wrap('span');
__________________
Pas de question technique par MP !
Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi !
Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
Mon livre sur jQuery
Bovino est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/08/2011, 15h15   #3
Membre éclairé
 
Avatar de Satch
 
Inscription : mars 2004
Messages : 448
Détails du profil
Informations personnelles :
Âge : 30

Informations forums :
Inscription : mars 2004
Messages : 448
Points : 381
Points : 381
Envoyer un message via MSN à Satch
Merci, j'en prends note.
Je débute avec jQuery depuis une semaine, je n'ai pas encore les bons réflexes.
Ceci dit, ça ne change rien à mon problème
__________________
Je sais que désormais vivre est un calembour,
La mort est devenue un état permanent,
Le monde est aux fantômes, aux hyènes et aux vautours.
Moi je vous dis bravo et vive la mort.
Satch est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/08/2011, 17h02   #4
Membre chevronné
 
Homme
Développeur Web
Inscription : mars 2011
Messages : 399
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur Web
Secteur : Finance

Informations forums :
Inscription : mars 2011
Messages : 399
Points : 662
Points : 662
Pas essayé mais je pense que ça vient de la propriété "opacity" qui n'est pas "compris" par IE.

CSS :
Code :
1
2
3
4
5
.test{
    opacity: 0;
    -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; // IE8
     filter: alpha(opacity=0); // Autre IE
}
Plugin :
Code :
1
2
3
4
5
6
$.fn.foo = function() {         
    var texte = $(this).html();        
    texte = "<span>"+texte+"</span>";         
    $(this).html(texte);           
    $('span').addClass('test');     
};
__________________
Membre de StackOverflow, je suis un fervant utilisateur de PHP et de jQuery.
Après des études de graphisme, j'ai décidé de mélanger développement web et web design. J'ai ainsi donc créé mon site web mais aussi plusieurs projets personnels.
Dans les plus aboutis, vous pourrez trouver dans mon labo et dans mon devblog, un raccourcisseur d'url, un bookmarklet pour envoyer l'url de la page actuelle vers votre email pour lire plus tard ou sauvegarder, mon générateur de template HTML5, etc...
Shikiryu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/08/2011, 17h09   #5
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 807
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2008
Messages : 13 807
Points : 35 797
Points : 35 797
jQuery gère lui-même l'affectation de l'opacité en fonction du navigateur.
Code :
1
2
3
var texte = $(this).html();
texte.wrap('span');
$(this).find('span').css({opacity: 0});
__________________
Pas de question technique par MP !
Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi !
Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
Mon livre sur jQuery
Bovino est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/08/2011, 08h50   #6
Membre éclairé
 
Avatar de Satch
 
Inscription : mars 2004
Messages : 448
Détails du profil
Informations personnelles :
Âge : 30

Informations forums :
Inscription : mars 2004
Messages : 448
Points : 381
Points : 381
Envoyer un message via MSN à Satch
Sauf que dans ce cas ça ne marche pas.
Je viens de me rendre compte que l'opacité ne fonctionne pas avec les élements inline dans IE.

J'ai donc du bidouiller un truc du genre :
Code :
1
2
3
4
span {
  display:block;
  float:left;
}
pour que ça marche.

Mais je ne suis, mais alors pas du tout satisfait de cette solution.

pour résumer encore plus le problème voici un autre fichier de test qui ne marche pas alors qu'il devrait :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>IE really sux !</title>
<script type="text/javascript" src="../scripts/jquery/jquery-1.6.1.min.js"></script>
<script type="text/javascript">
 
	$(document).ready(function(){
		$('span').css('opacity','0');
	});
</script>
 
</head>
 
<body>
	<p><span>IE SUX</span></p>
</body>
</html>
Il semble donc que même jquery ne sache pas mettre l'opacité sur des éléments inline dans IE.

Est-ce impossible ?
__________________
Je sais que désormais vivre est un calembour,
La mort est devenue un état permanent,
Le monde est aux fantômes, aux hyènes et aux vautours.
Moi je vous dis bravo et vive la mort.
Satch est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h27.


 
 
 
 
Partenaires

Hébergement Web