11548 sujets

JavaScript, DOM et API Web HTML5

Salut,

Sur un site sur lequel je travaille, je voudrais que l'on puisse écrire des articles en y insérant des images. Pour ça, j'ai créé un lien qui ouvre un pop-up depuis lequel on peut uploader une image. Le code HTML pour afficher l'image est ensuite envoyé depuis le popup vers le champ de texte de la page principale.

Mon problème, c'est que ça ne marche que si mon champ de texte est vide à la base. Mais ce qui est vraiment bizarre, c'est que tant que mon champ de texte est rempli de "code automatique généré par le pop-up", ça marche, et je peux en ajouter. Par contre, dès que je l'édite manuellement, le pop-up n'inscrit plus rien dans le champ.

Voilà mon code :

var imagejs = '<?php print $image; ?>';
var codeimage = '\n<img src="'+imagejs+'" />';
window.opener.document.getElementById("ChampTexte").innerHTML += codeimage;


Et donc pour illustrer ce que je disais, voici un exemple :

1. Je n'ai rien inscrit dans mon champ de texte, j'ouvre le pop up et j'upload une image, le code html s'inscrit dans mon champ de texte, je ferme le pop up.

2. J'ai donc "<img src="Photos/News/40.jpg" />" inscrit dans mon champ de texte, je rouvre mon pop up, j'upload une nouvelle image, je ferme.

3. J'ai donc "<img src="Photos/News/40.jpg" /><img src="Photos/News/41.jpg" />" inscrit dans mon champ de texte, je tape "Hello world" à la suite.

4. J'ai marqué "<img src="Photos/News/40.jpg" /><img src="Photos/News/41.jpg" /> Hello world" dans mon champ de texte, j'ouvre le pop up et upload une image, et là le code HTML ne s'inscrit plus dans le champ de texte.

Voilà voilà, si quelqu'un a une idée pour m'aider Smiley cligne

Merci, à+
Modifié par ZeSandwich (11 Oct 2008 - 21:50)
Je suppose que "champ de texte" est un <textarea> ? Dans ce cas, travaille avec l'attribut value et non innerHTML, et je pense que ça fonctionnera.

Je suppute que le navigateur te laisse accéder au innerHTML tant que l'utilisateur n'a pas modifié le value (rien de saisi par l'utilisateur). Une fois "Hello World" écrit, il protège le value d'un écrasement par modification du innerHTML...