Cet objet ne gère pas cette proriété ou ...

Résolu/Fermé
sebonoide Messages postés 8 Date d'inscription jeudi 19 février 2009 Statut Membre Dernière intervention 25 février 2009 - 25 févr. 2009 à 18:01
 Baltringue - 4 mai 2010 à 10:47
Bonjour,

Je fais appel à vous car je rencontre un soucis très ennuyeux sous IE.

C'est dans le cadre d'un BBCODE, un lien faisant appel à une fonction js qui fais apparaitre une palette de couleurs où chaque couleur est un lien faisant appel à une autre fonction js qui elle insère le BBCODE dans la textArea.

Tous fonctionne sur les navigateurs autre que IE.

Sous IE le lien ne fonctionne pas, le debugger dis cet objet ne gère pas cette propriété ou cette methode.
En faisant des test j'ai remarqué que ce lien, si je le déplace hors des balise <form>, plus de soucis cela fonctionne.
J'ai donc mis en exemple des bout de code (XHTML, js) avec les 2 liens, une entre <form> et l'autre non

Quelqu'un aurait une idée?

HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
    <head>
        <title>azzz</title>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
        <link rel="stylesheet" media="screen" type="text/css" title="Design" href="designIE.css" />
   		
		<script type="text/Javascript" src="javascript/deroulement_bouton_couleur.js"></script>
		<script type="text/Javascript" src="javascript/addBBcode.js"></script>
    </head>
<body>
<form id="form_redaction_article">


<a href="#ancre" class ="bb_code_couleur" onclick="javascript:deroulement_bouton_couleur('deroulement_bouton_couleur', 'espace_invisible');" title="Cliquez ici pour choisir une couleur"><img src="images/boutons/bouton_BB_Code/bouton_couleur.png" alt = "non_visible" style="visibility:hidden;"/></a>

<fieldset id = "deroulement_bouton_couleur">
</fieldset>
<p id="espace_invisible" style="display:none;"></p>

						
<textarea class="centrer" name="redaction_article" id="redaction_article" rows="10" cols="90"></textarea>
</form>
<a href="#ancre" class ="bb_code_couleur" onclick="javascript:deroulement_bouton_couleur('deroulement_bouton_couleur', 'espace_invisible');" title="Cliquez ici pour choisir une couleur"><img src="images/boutons/bouton_BB_Code/bouton_couleur.png" alt = "non_visible" style="visibility:hidden;"/></a>
</body>
</html>


Les 2 javascripts
Le premier sert à afficher la palette de couleur

var affichage 

function deroulement_bouton_couleur(elmt, elmtb)
{
	if (affichage == undefined)
	{
		affichage = 1;
	}
	else
	{
		affichage += 1;
	}
	if (!(affichage%2) == 0)// si affichage n'est pas un multiple de 2
	{

		var az = document.getElementById(elmt);
		az.style.display = "block";
		var bz = document.getElementById(elmtb);
		bz.style.display = "block";
		
		var b_couleur_2 = document.createElement("a");
		b_couleur_2.className = "b_couleur_2";
		b_couleur_2.setAttribute("href","#ancre");
		b_couleur_2.setAttribute("title","Cliquer ici pour sélectionner la couleur");
		var img_b_couleur_2 = document.createElement("img");
		img_b_couleur_2.setAttribute("src","images/boutons/bouton_BB_Code/boutons_couleur/couleur_1.png");
    	img_b_couleur_2.setAttribute("alt","Jaune 1");
		img_b_couleur_2.style.visibility = "hidden";
		addEvent(b_couleur_2,"click",function (){insertion('[couleur=FFE963]','/couleur')});
///////////// suis 40 bloc comme le précédent pour chaque couleur//////////////
                b_couleur_2.appendChild(img_b_couleur_2);
/////etc/////
               az.appendChild(b_couleur_2);
/////etc/////
           }
	else
	{
		var az = document.getElementById(elmt);
		az.style.display = "none";
		var bz = document.getElementById(elmtb);
		bz.style.display = "none";
		while (az.firstChild)
		{
  			az.removeChild(az.firstChild);
		}
	}	
}

function addEvent(obj,event,fct){
     if(obj.attachEvent)
        obj.attachEvent('on' + event,fct);
     else
        obj.addEventListener(event,fct,true);
}



Le second sert as insérer le BBCODE dans la textarea

function insertion(repdeb, repfin) {
  var input = document.getElementById('redaction_article');
  input.focus();
  /* pour l'Explorer Internet */
  if(typeof document.selection != 'undefined') {
    /* Insertion du code de formatage */
    var range = document.selection.createRange();
    var insText = range.text;
    range.text = repdeb + insText + repfin;
    /* Ajustement de la position du curseur */
    range = document.selection.createRange();
    if (insText.length == 0) {
      range.move('character', -repfin.length);
    } else {
      range.moveStart('character', repdeb.length + insText.length + repfin.length);
    }
    range.select();
  }
  /* pour navigateurs plus récents basés sur Gecko*/
  else if(typeof input.selectionStart != 'undefined')
  {
    /* Insertion du code de formatage */
    var start = input.selectionStart;
    var end = input.selectionEnd;
    var insText = input.value.substring(start, end);
    input.value = input.value.substr(0, start) + repdeb + insText + repfin + input.value.substr(end);
    /* Ajustement de la position du curseur */
    var pos;
    if (insText.length == 0) {
      pos = start + repdeb.length;
    } else {
      pos = start + repdeb.length + insText.length + repfin.length;
    }
    input.selectionStart = pos;
    input.selectionEnd = pos;
  }
  /* pour les autres navigateurs */
  else
  {
    /* requête de la position d'insertion */
    var pos;
    var re = new RegExp('^[0-9]{0,3}$');
    while(!re.test(pos)) {
      pos = prompt("Insertion à la position (0.." + input.value.length + "):", "0");
    }
    if(pos > input.value.length) {
      pos = input.value.length;
    }
    /* Insertion du code de formatage */
    var insText = prompt("Veuillez entrer le texte à formater:");
    input.value = input.value.substr(0, pos) + repdeb + insText + repfin + input.value.substr(pos);
  }
}
//-->

2 réponses

C'est bien, il aurait été utile de savoir comment.
10
sebonoide Messages postés 8 Date d'inscription jeudi 19 février 2009 Statut Membre Dernière intervention 25 février 2009
25 févr. 2009 à 19:58
Résolue
-1
c'est clair, même un an plus tard ça peut intéresser... mais comment diantre a-t-il fait pour résoudre? (mytho..?)
0