Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1319 connectés 

  FORUM HardWare.fr
  Programmation
  HTML/CSS

  Problème avec mon script bbcode

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Problème avec mon script bbcode

n°1877126
F3n3ck
Posté le 24-04-2009 à 09:06:16  profilanswer
 

Bonjour
J'ai actuellement installé sur mon site un script de bbcode pour écrire des articles.
Il fonctionne nickel, le problème c'est qu'il ne foncionne pas sous IE.  
En effet lorsque je clique sur mes icones pour écrire mon article sous IE cela s'affiche de cette facon :  
 
<center></center><gras></gas><couleur=orange></couleur>
 
Les balises se suivent et ne s'imbrique pas. De plus le curseur ce met toujours à la fin de la ligne et non entre les balises. Auriez vous une solution svp. Je vous donnes mon code si cela peut vous aidez. Merci
 
 
<div class="boutons_form">
  <span class="boutons">
   <img src="../img/form/gras.gif" alt="Gras" title="Gras" onclick="balise('&lt;gras&gt;','&lt;/gras&gt;', 'intro');parse('intro', 'prev_intro');" class="bouton_cliquable" />
   <img src="../img/form/italique.gif" alt="Italique" title="Italique" onclick="balise('&lt;italique&gt;','&lt;/italique&gt;', 'intro');parse('intro', 'prev_intro');" class="bouton_cliquable" />
   <img src="../img/form/souligne.gif" alt="Souligné" title="Souligné" onclick="balise('&lt;souligne&gt;','&lt;/souligne&gt;', 'intro');parse('intro', 'prev_intro');" class="bouton_cliquable" />
   <img src="../img/form/barrer.gif" alt="Barré" title="Barré" onclick="balise('&lt;barre&gt;','&lt;/barre&gt;', 'intro');parse('intro', 'prev_intro');" class="bouton_cliquable" />
  </span>
 
  <span class="boutons">
   <img src="../img/form/liste.gif" alt="Liste à puces" title="Liste à puces" onclick="add_liste('intro','prev_intro')" class="bouton_cliquable" />
   <img src="../img/form/citation.gif" alt="Citation" title="Citation" onclick="add_bal2('citation','intro','prev_intro')" class="bouton_cliquable" />
   <img src="../img/form/image.gif" alt="Image" title="Image" onclick="balise('&lt;image&gt;','&lt;/image&gt;', 'intro');parse('intro', 'prev_intro');" class="bouton_cliquable" />
   <img src="../img/form/lien.gif" alt="Lien" title="Lien" onclick="add_bal2('lien','intro','prev_intro')" class="bouton_cliquable" />
   <img src="../img/form/mail.gif" alt="E-mail" title="E-mail" onclick="add_bal2('email','intro','prev_intro')" class="bouton_cliquable" />
  </span>
  <br />
  <span class="cleaner">
   
   <select id="code_intro" onchange="add_bal('code','code_intro','intro','prev_intro')">
    <option class="opt_titre" selected="selected">Code</option>
 
    <option value="php">PHP</option>
 
    <option value="html">HTML</option>
    <option value="sql">SQL</option>
                                <option value="javascript">JAVASCRIPT</option>
                                <option value="actionscript">ACTIONSCRIPT</option>
                                <option value="c">C</option>
                                <option value="c++">C++</option>
                                <option value="vb">VB</option>
   </select>
   
   <select id="position_intro" onchange="add_bal('position','position_intro','intro','prev_intro')">
    <option class="opt_titre" selected="selected">Position</option>
    <option value="justifie">Justifié</option>
 
    <option value="gauche">A gauche</option>
    <option value="centrebb" class="centrebb">Centré</option>
    <option value="droite" class="droite">A droite</option>
   </select>
   
   <select id="taille_intro" onchange="add_bal('taille','taille_intro','intro','prev_intro')">
    <option class="opt_titre" selected="selected">Taille</option>
    <option value="ttpetit">Très très petit</option>
 
    <option value="tpetit">Très petit</option>
    <option value="petit">Petit</option>
    <option value="gros">Gros</option>
    <option value="tgros">Très gros</option>
    <option value="ttgros">Très très gros</option>
   </select>
 
   
   <select id="couleur_intro" onchange="add_bal('couleur','couleur_intro','intro','prev_intro')">
    <option class="opt_titre" selected="selected">Couleur</option>
    <option value="rose" class="rose">rose</option>
    <option value="rouge" class="rouge">rouge</option>
    <option value="orange" class="orange">orange</option>
    <option value="jaune" class="jaune">jaune</option>
 
    <option value="vertc" class="vertc">vert clair</option>
    <option value="vertf" class="vertf">vert foncé</option>
    <option value="olive" class="olive">olive</option>
    <option value="turquoise" class="turquoise">turquoise</option>
    <option value="bleugris" class="bleugris">bleugris</option>
    <option value="bleu" class="bleu">bleu</option>
 
    <option value="marine" class="marine">marine</option>
    <option value="violet" class="violet">violet</option>
    <option value="marron" class="marron">marron</option>
    <option value="noir" class="noir">noir</option>
    <option value="gris" class="gris">gris</option>
    <option value="argent" class="argent">argent</option>
 
    <option value="blanc" class="blanc">blanc</option>
   </select>
   
   <select id="police_intro" onchange="add_bal('police','police_intro','intro','prev_intro')">
    <option class="opt_titre" selected="selected">Police</option>
    <option value="arial" class="arial">arial</option>
    <option value="times" class="times">times</option>
 
    <option value="courrier" class="courrier">courrier</option>
 
    <option value="impact" class="impact">impact</option>
    <option value="geneva" class="geneva">geneva</option>
    <option value="optima" class="optima">optima</option>
   </select>
   </span>
 
  </div>  
   
  <div class="form">
 
   <textarea tabindex="4"onselect="storeCaret('intro')" tabindex="30" onclick="storeCaret('intro');parse('intro', 'prev_intro')" onkeyup="storeCaret('intro');parse('intro', 'prev_intro');" name="intro" id="intro" cols="40" rows="15"></textarea>
   <div id="prev_intro"></div>
   </div>
 
 
Code JS :
 
function storeCaret(id_textarea)
 {  
 champ = document.getElementById(id_textarea);
  if (champ.createTextRange)
  champ.curseur = document.selection.createRange().duplicate();
 }
 
 function balise(balise_debut, balise_fin, id_textarea)
 {
 var champ = document.getElementById(id_textarea);
 var scroll = champ.scrollTop;
  if (champ.curseur)
  {
  champ.curseur.text = balise_debut + champ.curseur.text + balise_fin;
  }
  else if (champ.selectionStart != 'undefined' && champ.selectionEnd != 'undefined')
  {
  var debut = champ.value.substring(0, champ.selectionStart);
  var entre = champ.value.substring(champ.selectionStart, champ.selectionEnd);
  var fin = champ.value.substring(champ.selectionEnd);
  champ.value = debut + balise_debut + entre + balise_fin + fin;
  champ.focus();
  champ.setSelectionRange(debut.length + balise_debut.length, champ.value.length - fin.length - balise_fin.length);
  }
  else
  {
  champ.value  += balise_debut + balise_fin;
  champ.focus();
  }
 champ.scrollTop = scroll;
 }
 
 function parse(id_textarea, id_prev)
 {
 var champ = document.getElementById(id_textarea);
 var div_prev = document.getElementById(id_prev);
 var contenu = champ.value;
 
  if (document.body.scrollTop)
  var scroll = document.body.scrollTop;
  else
  var scroll = window.pageYOffset;
 
  if (champ.selectionStart != 'undefined' && !champ.curseur)
  {
  var pos = champ.selectionStart;
  contenu = remplace(remplace(contenu.substring(0, pos),'>','&gt;'),'<','&lt;') + '<a href="#" name="prev_ancre_suivi" id="prev_ancre_suivi"></a>' + remplace(remplace(contenu.substring(pos),'>','&gt;'),'<','&lt;');
  }
  else
  contenu = remplace(remplace(contenu,'>','&gt;'),'<','&lt;');
 
 contenu = remplace(contenu, "\n", '<br />');
 
 contenu = contenu.replace(/&lt;code=(html|php|sql|c|c\+\+|javascript|actionscript|java|vb)&gt;([\s\S]+?)&lt;\/code&gt;/g, '<span class="code">Code</span><div class="code2 $1">$2</div>');
 contenu = contenu.replace(/&lt;gras&gt;([\s\S]+?)&lt;\/gras&gt;/g, '<strong>$1</strong>');
 contenu = contenu.replace(/&lt;(souligne|italique)&gt;([\s\S]+?)&lt;\/\1&gt;/g, '<span class="$1">$2</span>');
 contenu = contenu.replace(/&lt;barre&gt;([\s\S]+?)&lt;\/barre&gt;/g, '<strike>$1</strike>');
 contenu = contenu.replace(/&lt;couleur=(orange|noir|marron|vertf|olive|marine|violet|bleugris|argent|gris|rouge|vertc|jaune|bleu|rose|turquoise|blanc)&gt;([\s\S]+?)&lt;\/couleur&gt;/g, '<span class="$1">$2</span>');
 contenu = contenu.replace(/&lt;police=(arial|times|courrier|impact|geneva|optima)&gt;([\s\S]+?)&lt;\/police&gt;/g, '<span class="$1">$2</span>');
 contenu = contenu.replace(/&lt;taille=(ttpetit|tpetit|petit|gros|tgros|ttgros)&gt;([\s\S]+?)&lt;\/taille&gt;/g, '<span class="$1">$2</span>');
 contenu = contenu.replace(/&lt;image&gt;(.+?)&lt;\/image&gt;/g, '<img src="$1" alt="Image" />');
 contenu = contenu.replace(/&lt;position=(gauche|droite|centrebb|justifie)&gt;([\s\S]+?)&lt;\/position&gt;/g, '<div class="$1">$2</div>');
 contenu = contenu.replace(/&lt;lien&gt;(.+?)&lt;\/lien&gt;/g, '<a href="$1">$1</a>');
 contenu = contenu.replace(/&lt;lien=(.+?)&gt;(.+?)&lt;\/lien&gt;/g, '<a href="$1">$2</a>');
 contenu = contenu.replace(/&lt;email&gt;(.+?)&lt;\/email&gt;/g, '<a href="mailto:$1">$1</a>');
 contenu = contenu.replace(/&lt;email=(.+?)&gt;(.+?)&lt;\/email&gt;/g, '<a href="mailto:$1">$2</a>');
 contenu = contenu.replace(/&lt;(information|attention|erreur|question)&gt;([\s\S]+?)&lt;\/\1&gt;/g, '<div class="rmq $1">$2</div>');
 contenu = contenu.replace(/&lt;liste&gt;\s*(<br \/> )?\s*([\s\S]+?)\s*(<br \/> )?\s*&lt;\/liste&gt;/g, '<ul>$2</ul>');
 contenu = contenu.replace(/&lt;puce&gt;([\s\S]+?)&lt;\/puce&gt;\s*(<br \/> )?\s*/g, '<li>$1</li>');
 contenu = contenu.replace(/&lt;flash=(\d+)\*(\d+)&gt;(.+?)&lt;\/flash&gt;/g, '<object  type="application/x-shockwave-flash" data="$3" width="$1" height="$2"><param name="movie" value="$3" /><param name="quality" value="high" />Animation flash</object>');
 
 var i = 0;
  while (contenu.indexOf("&lt;citation" ) != -1 && contenu.indexOf("&lt;/citation&gt;" ) != -1 && (contenu.indexOf("&lt;citation" ) < contenu.indexOf("&lt;/citation&gt;" )) && i < 30)
  {
  contenu = contenu.replace(/&lt;citation=(.*?)&gt;([\s\S]+?)&lt;\/citation&gt;/g, '<span class="citation">Citation : $1</span><div class="citation2">$2</div>');
  i++;
  }
 
 contenu = remplace(contenu, ':)', '<img src="images/smilies/smile.png" alt="Smiley" class="smilies" />');
 contenu = remplace(contenu, ':D', '<img src="images/smilies/heureux.png" alt="Smiley" class="smilies" />');
 contenu = remplace(contenu, ';)', '<img src="images/smilies/clin.png" alt="Smiley" class="smilies" />');
 contenu = remplace(contenu, ':p', '<img src="images/smilies/langue.png" alt="Smiley" class="smilies" />');
 contenu = remplace(contenu, ':lol:', '<img src="images/smilies/rire.gif" alt="Smiley" class="smilies" />');
 contenu = remplace(contenu, ':euh:', '<img src="images/smilies/unsure.gif" alt="Smiley" class="smilies" />');
 contenu = remplace(contenu, ':(', '<img src="images/smilies/triste.png" alt="Smiley" class="smilies" />');
 contenu = remplace(contenu, ':o', '<img src="images/smilies/huh.png" alt="Smiley" class="smilies" />');
 contenu = remplace(contenu, ':colere:', '<img src="images/smilies/mechant.png" alt="Smiley" class="smilies" />');
 contenu = remplace(contenu, 'o_O', '<img src="images/smilies/blink.gif" alt="Smiley" class="smilies" />');
 contenu = remplace(contenu, '^^', '<img src="images/smilies/hihi.png" alt="Smiley" class="smilies" />');
 contenu = remplace(contenu, ':-*', '<img src="images/smilies/siffle.png" alt="Smiley" class="smilies" />');
 
 div_prev.innerHTML = contenu;
  if (document.getElementById('prev_ancre_suivi'))
  document.getElementById('prev_ancre_suivi').focus();
 document.getElementById(id_textarea).focus();
 }
 
 function remplace(data, search, replace)
 {
 var temp = data;
 var longueur = search.length;
  while (temp.indexOf(search) > -1)
  {
  pos= temp.indexOf(search);
  temp = (temp.substring(0, pos) + replace + temp.substring((pos + longueur), temp.length));
  }
 return temp;
 }
 
 function add_bal(nom, id_liste, id_textarea, id_prev)
 {
 bal = document.getElementById(id_liste).value;
 balise('<'+nom+'='+bal+'>','</'+nom+'>', id_textarea);parse(id_textarea, id_prev);
 document.getElementById(id_liste).options[0].selected = true;
 }
 
 function add_bal2(nom, id_textarea, id_prev)
 {
 var texte = '';
  if (nom == 'citation')
  texte = 'Veuillez renseigner l\'auteur de la citation';
  else if (nom == 'lien')
  texte = 'Veuillez indiquer le lien';
  else if (nom == 'email')
  texte = 'Veuillez indiquer l\'email';
 bal = prompt(texte);
  if (!bal && nom == 'citation')
  bal = 'Pas de titre';
  if (bal)
  balise('<'+nom+'='+bal+'>','</'+nom+'>', id_textarea);parse(id_textarea, id_prev);
 document.getElementById(nom).options[0].selected = true;
 }
 
 function add_liste(id_textarea, id_prev)
 {
 var texte = '';
  while (tmp = prompt('Saisir le contenu d\'une puce (si vous voulez arreter ici, cliquez sur annuler)'))
  texte += '<puce>'+tmp+'</puce>'+"\n";
 balise('<liste>'+"\n"+texte,'</liste>', id_textarea);parse(id_textarea, id_prev);
 }
 function ouvrir_page(page,nom,x,y)
 {
  window.open(page,nom,'toolbar=false,personalbar=false,titlebar=false,location=false,directories=false,width='+x+',height='+y+',scrollbars=yes,resizable=yes');
 }
 
 
Merci beaucoup

mood
Publicité
Posté le 24-04-2009 à 09:06:16  profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  HTML/CSS

  Problème avec mon script bbcode

 

Sujets relatifs
Probleme de synthaxe en mysql/JSPprobleme de include en melangeant C et C++
Problème pour supprimer article en PHP/MySQLMFC & Threads problème de compréhension
[résolu]Comment importer un commentaire HTML dans python?Problème d'envoi de mail avec php
probleme de rafraichissement d'un JPanelProbleme de Footer...
[JavaScript] problème de "closure" (résolut)[C][GTK] Problème de signal_connect
Plus de sujets relatifs à : Problème avec mon script bbcode


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR