Chargement d'image impossible en DOM

hispanus Messages postés 3 Date d'inscription vendredi 5 octobre 2007 Statut Membre Dernière intervention 6 octobre 2007 - 5 oct. 2007 à 20:51
hispanus Messages postés 3 Date d'inscription vendredi 5 octobre 2007 Statut Membre Dernière intervention 6 octobre 2007 - 6 oct. 2007 à 12:57
salut à tous !
pour mon premier message sur ce forum, j'ai un gros souci avec le bout de code qui suit, qui sert à charger une image à la volée dans une page HTML après avoir créé son noeud, là où il n'y en avait pas avant, depuis le disque local de l'internaute (pour traitement ultérieur des infos par envoi en PHP, mais ce n'est pas le PB...)

ce code (simplifié pour les besoins de la chose...) :

function instal_im(image, nom, ident)
{
with(document)
{
var numero = parseInt(getElementById('numero_paragraphe').value);
var nomfichier = "file://"+image;
nouvim = new Image();
nouvim.src = nomfichier;
var nouvelleimg = createElement("img");
with(nouvelleimg)
{
setAttribute("src", nomfichier);
setAttribute("name", "image"+numero);
}
getElementById("ART").insertBefore(nouvelleimg, getElementById("_style"+numero));
}
}

...fonctionne parfaitement avec certains navigateurs : sur mac, omniweb, shiira, safari 1.3.2... sur PC IE6. Mais il ne fonctionne pas avec d'autres : safari 2 et 3, firefox, camino.

je n'ai pas tout testé, mais le résultat est variable. dans safari par exemple, il me charge une image VIDE, mais sans le symbole "image" si je force la taille de la nouvelle image créée à 200x200px. Dans la plupart des navigateurs touchés, un clic droit sur l'image vide permet de l'afficher correctement dans un nouvel onglet, mais pas toujours (firefox)

alors la question que je me pose : est-ce mon code qui est foireux, ou est-ce une caractéristique malheureuse des navigateurs cités ?
voilà, j'espère que l'un de vous saura éclairer ma lanterne, et je m'excuse par avance si ce sujet a été déjà traité, la recherche, de mon côté, ayant été infructueuse...

4 réponses

cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
6 oct. 2007 à 09:49
Bonjour,

    j'ai sucré quelques petites choses pour tester
        mais, pas de soucis sur un PC avec Safari 3, FireFox, IE7
        ...par exemple, mais sur ce que tu nous donnes,
        car pas compris cela :     Dans la plupart des navigateurs touchés, un clic droit sur l'image
                                                    vide permet de l'afficher correctement dans un nouvel onglet
       pas d'action avec le click droit dans le script ?

<script>
function instal_im(image)
{  with(document)
   {  var numero = parseInt(getElementById('numero_paragraphe').value);
      var nomfichier = "file://"+image;
      var nouvelleimg = createElement("img");
      with(nouvelleimg)
      {  setAttribute("src", nomfichier);
         setAttribute("name", "image"+numero);
      }
      getElementById("ART").insertBefore
            (nouvelleimg, getElementById("_style"+numero));
   }
}

    instal_im("D:/Documents and Settings/Bul/Mes documents/Mes Images/Paitre.gif")  
</script>

on doit pouvoir remplacer
      with(nouvelleimg)

      {  setAttribute("src", nomfichier);

         setAttribute("name", "image"+numero);

      }
par
      nouvelleimg.src=nomfichier;

      nouvelleimg.name="image"+numero;

dèjà eu des surprises ( probablement de ma faute ! )
avec setAttribute. peut-être à tester ?

<hr />                Cordialement            Bul         [mon Site]     [M'écrire]<hr />
0
hispanus Messages postés 3 Date d'inscription vendredi 5 octobre 2007 Statut Membre Dernière intervention 6 octobre 2007
6 oct. 2007 à 11:30
je viens de retester en réinstallant safari 2 sur mon mac, et mon code refonctionne (en fait, je CROYAIS utiliser safari 2, mais comme j'avais installé safari 3, safari 2 utilisait les librairies de safari 3 à mon insu)

par contre ça ne marche toujours pas dans firefox...

le problème est que je suis obligé (enfin je pense) d'utiliser "file://" suivi du chemin vers le fichier donné en interrogeant le champ file qui a permis de choisir l'image sur le disque dur.
on a donc pour la valeur nomfichier un truc du style : file:///sites/antiopa/images/toto.jpg (sur un mac ou linux)
sur windows, je ne sais pas ce que ça donne...?
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
6 oct. 2007 à 11:55
ah les trucs à l'insu de notre plein gré...

sur Mac , je ne peux que mal répondre ou dire n'importe quoi !

file:// est obligatoire, avec FireFox, pour un fichier local, si on ne
donne pas un chemin relatif, et ne fonctionnera pas sur un site
où il faut mettre http://.
<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
<hr />
0
hispanus Messages postés 3 Date d'inscription vendredi 5 octobre 2007 Statut Membre Dernière intervention 6 octobre 2007
6 oct. 2007 à 12:57
c'est bête, ici je ne peux pas tester sur mon PC virtuel pour voir si le problème persiste dans firefox PC... il faudra attendre !
je me doutais bien que file:// était obligatoire pour un chemin absolu en local. et c'est là que ça coince apparemment avec les versions mac du navigateur de mozilla (en fait c'est pareil avec CAMINO, mais je m'y attendais...)
0
Rejoignez-nous