sebonoide
Messages postés8Date d'inscriptionjeudi 19 février 2009StatutMembreDernière intervention25 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);
}
}
//-->