11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour à tous,

Je suis en train de finaliser un site. Après la mise en conformité avec la validation par le w3c, je me suis attaqué au javascript.

Tout marche bien, mis à part la coloration du texte dans une iframe (éditeur wysiwyg).

Mon iframe contient une page php qui se charge d'initialiser le mode édition (designMode) et de renvoyer soit un texte par défaut, soit le text d'un post.

Le problème porte sur le bouton "changer de couleur" de la barre d'outils. Tout marche bien sous firefox, safari, opera et chrome, mais pas sous IE (étonnant non ?)...

Ma fonction :
function changerCouleur(couleur){
  ewin.focus();
  if (IE) {
    cible=edoc.selection.createRange();
    cible.execCommand("ForeColor", false, couleur);
  }
  else edoc.execCommand("ForeColor", false, couleur);
  document.getElementById('tblCouleurs'+editeur).style.display="none";
}



Détails de l'initalisation de "ewin" et "edoc" :
if(IE){
  ewin = window.frames['editeurTxt'];
  edoc = ewin.document;
}
else{
  ewin = document.getElementById('editeurTxt').contentWindow;
  edoc = document.getElementById('editeurTxt').contentDocument;
}



J'ai essayé d'initialiser "cible" avec "getSelection" également mais rien. Les autres outils (gras, italique, insérer une image, aligner, etc.) marchent bien.

Le problème c'est que "cible.type" me renvoit "null", et par conséquent, "cible.text" est vide...

C'est donc dans cette logique que, lorsque j'utilise mon outil "couleur", IE ne me colore par mon texte en rouge, mais renvoi simplement le curseur en début de document avec une font rouge (si je saisi du texte, il la couleur choisie).

Arg... Je sais pas si c'est bien clair. Mais je tourne en rond sur le net, sur google, sur divers sites et je ne trouve rien qui puisse résoudre ce problème

Une idée ? Merci dans tous les cas !