Pages :
Bonjour à tous,

Voilà, comme mal de gens j'essaie de trouver un bon moyen de faire passer le format png sous IE. Après beaucoup de lecture et de recherche (peut-être pas encore assez Smiley confus ), je suis finalement tomber sur un script Javascript...

HTML:
<!--[if lt IE 7]>
<script defer type="text/javascript" src="include/pngfix.js"></script>
<![endif]-->


Javascript:
var arVersion = navigator.appVersion.split("MSIE")
var version = parseFloat(arVersion[1])

if ((version >= 5.5) && (document.body.filters)) 
{
   for(var i=0; i<document.images.length; i++)
   {
      var img = document.images[i]
      var imgName = img.src.toUpperCase()
      if (imgName.substring(imgName.length-3, imgName.length) == "PNG")
      {
         var imgID = (img.id) ? "id='" + img.id + "' " : ""
         var imgClass = (img.className) ? "class='" + img.className + "' " : ""
         var imgTitle = (img.title) ? "title='" + img.title + "' " : "title='" + img.alt + "' "
         var imgStyle = "display:inline-block;" + img.style.cssText 
         if (img.align == "left") imgStyle = "float:left;" + imgStyle
         if (img.align == "right") imgStyle = "float:right;" + imgStyle
         if (img.parentElement.href) imgStyle = "cursor:hand;" + imgStyle
         var strNewHTML = "<span " + imgID + imgClass + imgTitle
         + " style=\"" + "width:" + img.width + "px; height:" + img.height + "px;" + imgStyle + ";"
         + "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader"
         + "(src=\'" + img.src + "\', sizingMethod='scale');\"></span>" 
         img.outerHTML = strNewHTML
         i = i-1
      }
   }
}


Cette "technique" si je peux dire, fonctionne correctement mais arrive alors un problème, apparament, de securité.

En effet, testé sous SP2, IE déclanche sont fameux message concernant la restriction de l'affichage du contenu actif.

C'est pourquoi je me demande s'il n'aurait peut-être pas une solution à ce problème en modifiant le fichier javascript, ou tout simplement d'utiliser une autre méthode.


Merci d'avance.


EDIT: correction des mots JAVA en Javascript[/i]
Modifié par Connexion (12 Oct 2006 - 21:38)
Administrateur
Pour éviter tout malentendu, rappelons que "java" et "javascript" sont deux langages bien différents.
Salut,

As-tu le message lorsque tu affiches ta page qui se trouve en ligne ou lorsqu'elle se trouve en local ?
Voilà, comme dit karnabal, si c'est ouvert à partir d'un serveur, pas de problème d'activeX. Si c'est ouvert à partir du disque dur, ou si les paramètres de sécurités sont sur sécurité maximale, pouet Smiley decu Heureusement, tout ça est corrigé avec IE 7
Bonjour les amis,

En effet je testé mon site en local, après essaies sur server, plus de problème, cela fonctionne correctement.

Un grand merci pour cette précision.


To maniT4c : si j'enregistre le code javasript de ton premier lien dans une page que je nomerée par exemple "fix.js", et que j'en indiquerais la source dans les basiles head de mes pages. Cela pourrait-il aussi fonctionner ou dois-je obligatoirement mettre tout le code dans la page-même ?
Tu peux évidemment le mettre dans un fichier à part, c'est d'ailleurs conseillé Smiley smile

Et encore mieux, l'inclure via un commentaire conditionnel, beaucoup plus propre et sûr que la détection faite dans le JS
Modifié par FlorentG (12 Oct 2006 - 13:33)
Bonjour,

Concernant le commentaire... puis-je reprendre celui figurant dans mon premier post ?

<!--[if lt IE 7]>
<script defer type="text/javascript" src="include/pngfix.js"></script>
<!  -->


Ou dois-je le modifier ? (si la source ne change pas je veux dire)
Modifié par Connexion (12 Oct 2006 - 18:39)
bah super... j'ai posté un post pour rien... mais je voulais juste savoir si le PNG en question dans ces codes c'est du PNG 24 ou 8 Bit... ma question est peut-être stupide mais bon... on sait jamais
Salut,

Si ca peu t'aider, mes PNG sont enregistrés en 24, le 8 reviendrait presque à du GIF (qui est un rien plus léger que le png8).

Maintenant si le code reprend le 24... je n'en sais rien (je ne suis pas un pro du javascript) Smiley confus

Néanmoin il ne tient qu'a toi de faire l'essaie Smiley cligne
Modifié par Connexion (13 Oct 2006 - 00:07)
j'ai essayé la méthode du javascript au premier post... donc j'ai copié le script dans un fichier pngfix.js que j'ai placé dans le dossier include lui même à la racine du site... dans le head de l'index voila ce que j'ai donc :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<link rel="shortcut icon" type="image/x-icon" href="favicon.ico" />
<title>planet'eco</title>
<script type="text/javascript" src="includes/fonctions.js"></script>
<script defer type="text/javascript" src="includes/pngfix.js"></script>
<link rel="stylesheet" href="style/style.css" type="text/css" />
</head>

Et mes png ne sont toujours pas transparent sous ie... snif Smiley decu
Administrateur
Bonjour et bienvenue milsou,

afin de rendre ton message plus lisible, merci de bien vouloir l'éditer pour placer le code entre balises [ code] ici_le_code [ /code] (sans les espaces) comme expliqué dans l'Aide du Forum Smiley cligne

Felipe
Je pense que cela vient du fait que tu ne l'as pas mis en commentaire.

copie ton code, dans la partie html, comme ceci:

<!--[if lt IE 7]>
<script defer type="text/javascript" src="include/pngfix.js"></script>
<!  -->


Concernant le "include", c'est simplement un dossier complémentaire que j'avais créé afin de pas trop mélanger les fichiers... si ta page .js était placée dans le dossier racine avec toutes les autres pages, cela fonctionnerait aussi.
Modifié par Connexion (13 Oct 2006 - 14:22)
J'suis pas sur mais le PNG-8 ne compte pas de canal alpha... Etant donné que le script de ce topic concerne la transparence du PNG, c'est utilisable sur du PNG-24 Smiley cligne
Administrateur
Le PNG-8 a un bit de transparence (binaire "ce pixel a une couleur ou bien il est entièrement transparent").
Le PNG 16 millions de couleurs dispose d'un dégradé possible de 256 niveaux de transparence (ou pas)
SolykZ a écrit :
J'suis pas sur mais le PNG-8 ne compte pas de canal alpha... Etant donné que le script de ce topic concerne la transparence du PNG, c'est utilisable sur du PNG-24 Smiley cligne

Si, on peut avoir du PNG-8 avec de l'alpha normalle. En mettant plusieurs "chunk" transparence, on y arrive. Alors ça marchera bien sous FireFox, et sous IE on aura de la transparence normalle. C'est d'ailleurs un bon moyen pour pas trop se faire chier, tu fais une ombre transparente tout jolie qui apparaîtra sous FireFox, et sous IE t'aura juste pas l'ombre, mais à la place de la transparence normalle. Ca évite le fond gris du PNG-32

Ensuite, le PNG-24 n'a pas de transparence en fait. C'est juste 3 couches 8 bits rouge, vert et bleu (8 + 8 + 8 = 24).

Le PNG-32, lui a bien la couche alpha Smiley smile

On peut avoir du PNG-8 niveau de gris, du PNG-48 avec 16 bits par couches, etc. Même avoir 16 bits pour la transparence Smiley confus
Ah quand même ! Beuh, d'un coup j'me sens assez largué là ! lol

Oué c'est vrai que 32bits = 24+canal alpha... Comment eûsse-je pu oublier...
Pages :