soucy avec le boutton aperçut final - HTML/CSS - Programmation
Marsh Posté le 08-02-2008 à 14:54:04
Vaudrait mieux faire ça en AJAX, pour demander au serveur la version aperçu. En plus là ça fait du code dupliqué/potentiellement difficile à maintenir
Marsh Posté le 08-02-2008 à 14:56:53
re
ok mais alors comment on fait car là j'en ai marre de tourner au rond dépuis 3 mois
es ce que tu eux m'aidé à le faire merci
Marsh Posté le 08-02-2008 à 14:49:03
bonjour j'ai crée un outton aperçut final mais il ne fonctionne pas dés que je l'excute
et j'aimerais quand puisse clique pour voir le message dans un texterea et qu'on puisse voir les bbcode couleur et les smileys dans l'apperçut final
je ne sais pas si ça vien du code de ma page ou ma page de java script
et ça fait 3 mois que j'éssay et je ne trouve pas
es ce que vous pouvez m'aidé
voilà le code
livre d'or
<textarea name="contenu" id="contenu" rows="10" cols="84" onfocus="if(this.value=='Votre Message'){this.value='';}" onkeyup="javascript: analyse();">Votre Message</textarea>
</p>
<div id="apercu"></div>
<p align="center" class="texte_blanc">
<input type="button" name="apercu_bbcode" value="aperçu final" onClick = "aperçu final(document.getElementById('message').value);"/>
</p>
<!--Au clic, j'apelle ma fonction js-->
<br />
<br />
<div id="apercu_final"></div>
<p align="center">
<input type="submit" value="Envoyer" />
<input type="reset" name = "Effacer" value = "Effacer"/>
</p>
</form>
et j'ai mis 2 pages de javascripts
bbcode.js
ca c'est pour le temps réel
// contenu du temps réels du message
function type_text(t1)
{
var speed=80;
var index=0; text_pos=0;
var str_length=tl[0].length;
var contents, row;
contents = '';
row = Math.max(0,index-6);
while(row<index)
contents += tl[row++] + '\r\n';
document.textform.elements[0].value = contents + tl[index].substring(0,text_pos) + "_";
if(text_pos++==str_length)
{
text_pos = 0;
index++;
if(index != tl.length)
{
str_length=tl[index].length;
setTimeout("type_text()",1500);
}
}
else
setTimeout("type_text()",speed);
affiche();
}
function MM_callJS(jsStr)
{
//v2.0
return eval(jsStr)
}
//-->
function add_texte(texte)
{
document.getElementById('contenu').focus();
document.getElementById('contenu').value+=texte;
document.getElementById('contenu').focus();
analyse();
}
function bbcode(bbdebut, bbfin)
{
var Champ = document.getElementById('contenu');
Champ.focus();
/* Partie 1 : recuperation de la selection */
if(document.selection)
{
CreatedRange = document.selection.createRange();
CurrentSelection = CreatedRange.text;
}
else
{
var StartSelection = Champ.value.substring(0, Champ.selectionStart);
var CurrentSelection = Champ.value.substring(Champ.selectionStart, Champ.selectionEnd);
var EndSelection = Champ.value.substring(Champ.selectionEnd);
}
/* Partie 2 : on insere le tout */
if(document.selection)
{
CreatedRange.text = bbdebut + CurrentSelection + bbfin;
CreatedRange.select();
}
else
{
Champ.value = StartSelection + bbdebut + CurrentSelection + bbfin + EndSelection;
Champ.focus();
Champ.setSelectionRange(StartSelection.length + bbdebut.length,StartSelection.length + bbfin.length + CurrentSelection.length);
}
analyse();
}
function lien_index(type)
{
var Champ = document.getElementById('contenu');
Champ.focus();
if(document.selection)
{
CreatedRange = document.selection.createRange();
CurrentSelection = CreatedRange.text;
}
else
{
var StartSelection = Champ.value.substring(0, Champ.selectionStart);
var CurrentSelection = Champ.value.substring(Champ.selectionStart, Champ.selectionEnd);
var EndSelection = Champ.value.substring(Champ.selectionEnd);
}
if(type == 'lien')
{
if(CurrentSelection)
{
var lien1 = prompt("Définissez le lien","http://www..." );
var bbdebut = '<lien='+lien1+'>';
var bbfin = '</lien>';
}
else
{
var lien1 = prompt("Definissez le lien","http://www..." );
var texte1 = prompt("Définissez le texte qui s'affichera","site internet" );
var bbdebut = '<lien='+lien1+'>'+texte1;
var bbfin = '</lien>';
}
}
else if(type == 'citation')
{
if(CurrentSelection)
{
var citation1 = prompt("Définissez l'auteur","Molière" );
var bbdebut = '<citation='+citation1+'>';
var bbfin = '</citation>';
}
else
{
var citation1 = prompt("Definissez l'auteur","Molière" );
var texte1 = prompt("Définissez le texte qui s'affichera comme citation","Euh oups" );
var bbdebut = '<citation='+citation1+'>'+texte1;
var bbfin = '</citation>';
}
}
bbcode(bbdebut,bbfin);
}
function analyse()
{
var contenu = document.getElementById('contenu').value;
//Mise en forme du texte
//Position
var reg = new RegExp("<gauche>(.*)</gauche>", "g" );
contenu = contenu.replace(reg,'<div class="gauche">$1</div>');
var reg = new RegExp("<droite>(.*)</droite>", "g" );
contenu = contenu.replace(reg,'<div class="droite">$1</div>');
var reg = new RegExp("<centre>(.*)</centre>", "g" );
contenu = contenu.replace(reg,'<div class="centre">$1</div>');
var reg = new RegExp("<justifier>(.*)</justifier>", "g" );
contenu = contenu.replace(reg,'<div class="justifier">$1</div>');
// couleur
var reg = new RegExp("<rouge>(.*)</rouge>", "g" );
contenu = contenu.replace(reg,'<span class="rouge">$1</span>');
var reg = new RegExp("<orange>(.*)</orange>", "g" );
contenu = contenu.replace(reg,'<span class="orange">$1</span>');
var reg = new RegExp("<jaune>(.*)</jaune>", "g" );
contenu = contenu.replace(reg,'<span class="jaune">$1</span>');
var reg = new RegExp("<vert>(.*)</vert>", "g" );
contenu = contenu.replace(reg,'<span class="vert">$1</span>');
var reg = new RegExp("<bleu>(.*)</bleu>", "g" );
contenu = contenu.replace(reg,'<span class="bleu">$1</span>');
var reg = new RegExp("<violet>(.*)</violet>", "g" );
contenu = contenu.replace(reg,'<span class="violet">$1</span>');
var reg = new RegExp("<marron>(.*)</marron>", "g" );
contenu = contenu.replace(reg,'<span class="marron">$1</span>');
var reg = new RegExp("<noir>(.*)</noir>", "g" );
contenu = contenu.replace(reg,'<span class="noir">$1</span>');
var reg = new RegExp("<gris>(.*)</gris>", "g" );
contenu = contenu.replace(reg,'<span class="gris">$1</span>');
// police
var reg = new RegExp("<arial>(.*)</arial>", "g" );
contenu = contenu.replace(reg,'<span class="arial">$1</span>');
var reg = new RegExp("<times>(.*)</times>", "g" );
contenu = contenu.replace(reg,'<span class="times">$1</span>');
var reg = new RegExp("<courier>(.*)</courier>", "g" );
contenu = contenu.replace(reg,'<span class="courier">$1</span>');
var reg = new RegExp("<impact>(.*)</impact>", "g" );
contenu = contenu.replace(reg,'<span class="arial">$1</span>');
var reg = new RegExp("<verdana>(.*)</verdana>", "g" );
contenu = contenu.replace(reg,'<span class="verdana">$1</span>');
// police
var reg = new RegExp("<gras>(.*)</gras>", "g" );
contenu = contenu.replace(reg,'<span class="gras">$1</span>');
var reg = new RegExp("<italique>(.*)</italique>", "g" );
contenu = contenu.replace(reg,'<span class="italique">$1</span>');
var reg = new RegExp("<souligner>(.*)</souligner>", "g" );
contenu = contenu.replace(reg,'<span class="souligner">$1</span>');
var reg = new RegExp("<barrer>(.*)</barrer>", "g" );
contenu = contenu.replace(reg,'<span class="barrer">$1</span>');
var reg = new RegExp("<souligner_dessus>(.*)</souligner_dessus>", "g" );
contenu = contenu.replace(reg,'<span class="souligner_dessus">$1</span>');
var reg = new RegExp("<clignoter>(.*)</clignoter>", "g" );
contenu = contenu.replace(reg,'<span class="clignoter">$1</span>');
var reg = new RegExp("<lien=([^>]*)>([^<]*)</lien>", "g" );
contenu = contenu.replace(reg,'<a href="$1">$2</a>');
var reg = new RegExp("\\n", "g" );
contenu = contenu.replace(reg,'<br />');
document.getElementById('apercu').innerHTML = contenu;
}
function apercu_final()
{
var apercu_finalContent = document.getElementById("message" ).innerHTML;
document.getElementById("apercu_final" ).innerHTML = '<fieldset><legend>apercu_final</legend>'+apercu_finalContent+'</fieldset>';
return;
}
ca c'est pour l'aperçu final
qui se trouveras dans un texterea qui seras trnsparent et dés qu'on cliqueras sur le boutton aperçut final on verras le texterea avec le texte et bbcode coloré et les smileys
voilà le code code prev.js
// aperçut final
/g,'<img src="http://le.coffre.free.fr/images/smileys/wink.gif" title="wink" alt="wink" />',t)
g,'<img src="http://le.coffre.free.fr/images/smileys/xd.gif" title="xd" alt="xd" />',t)
g,'<img src="http://le.coffre.free.fr/images/smileys/sleep.gif" title="sleep" />',t)
g,'<img src="http://le.coffre.free.fr/images/smileys/arf.gif" title="arf" />',t)
g,'<img src="http://le.coffre.free.fr/images/smileys/yes.gif" title="yes" alt="yes" />',t)
g,'<img src="http://le.coffre.free.fr/images/smileys/bof.gif" title="bof" alt="bof" />',t)
/g,'<img src="http://le.coffre.free.fr/images/smileys/boulet.gif" title="boulet" alt="boulet" />',t)
g,'<img src="http://le.coffre.free.fr/images/smileys/lol2.gif" title="lol2" alt="lol2" />',t)
g,'<img src="http://le.coffre.free.fr/images/smileys/wow.gif" title="wow" alt="wow" />',t)
g,'<img src="http://le.coffre.free.fr/images/smileys/suspens.gif" title="suspens" />',t)
g,'<img src="http://le.coffre.free.fr/images/smileys/boss.gif" title="boss" alt="boss" />',t)
g,'<img src="http://le.coffre.free.fr/images/smileys/back.gif" title="back" alt="back" />',t)
g,'<img src="http://le.coffre.free.fr/images/smileys/gna.gif" title="gna" alt="gna" />',t)
//on assigne un évènement au bouton "Aperçu"
document.getElementByName('apercu_final')[0].onclick = apercu_final;
function apercu_final()
{
//on récupère le contenu du textarea qui à l'id : 'contenu'
var contenu = document.getElementById('contenu').value;
//on créer notre élement XMLHttpRequest (Ajax)
var xhr = false;
if (window.XMLHttpRequest)
{
//si c'est Firefox, Opera, IE7, etc
xhr = new XMLHttpRequest();
}
else if (window.ActiveXObject)
{
//si c'est IE < 7
xhr = new ActiveXObject("Microsoft.XMLHTTP" );
}
else
{
//Le navigateur n'est pas compatible avec AJAX (IE < 5 je crois)
alert('Votre navigateur n\'est pas compatible avec la technologie AJAX !');
}
//maintenant on désigne ce qu'on fait une fois qu'on a reçu la réponse du script PHP
xhr.onreadystatechange = function()
{
//si la réponse est correctement reçue
if (xhr.readyState == 4 && xhr.status == 200)
{
//on met la réponse dans le div 'preview' prévu à cet effet
//innerHTML n'est pas recommandé mais pour faire simple...
//Disons qu'utiliser DOM est un poil plus compliqué mais au moins il respecte les standards...
document.getElementById('apercu_final').innerHTML = xhr.responseText;
}
//on envoi la requête au script PHP
xhr.open("POST", 'mon_script.php', true);
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xhr.send('text='+contenu);
}
// les bbcodes
var timer=0;
var ptag=String.fromCharCode(5,6,7);
function previsualisation()
{
t=document.formulaire.textarea.value
t=code_to_html(t)
if (document.getElementById) document.getElementById("prev" ).innerHTML=t
if (document.formulaire.auto.checked) timer=setTimeout(previsualisation,1)
<!-- le "1" est le temps que met le texte à s'afficher, "1" : le texte s'affichera en même temps que l'on écrit (en s) -->
}
function automatique()
{
if (document.formulaire.auto.checked) previsualisation()
<!-- si on a coché la case d'aperçu automatique -->
}
function code_to_html(t)
{
t=nl2khol(t)
//Mise en forme du texte
//Position
t=deblaie(/(\[\/gauche\])/g,t)
t=remplace_tag(/\[gauche\](.+)\[\/gauche\]/g,'<span class="gauche">$1</span>',t)
t=remblaie(t)
t=deblaie(/(\[\/centrer\])/g,t)
t=remplace_tag(/\[center\](.+)\[\/center\]/g,'<span class="center">$1</span>',t)
t=remblaie(t)
t=deblaie(/(\[\/droite\])/g,t)
t=remplace_tag(/\[droite\](.+)\[\/droite\]/g,'<span class="droite">$1</span>',t)
t=remblaie(t)
t=deblaie(/(\[\/justifier\])/g,t)
t=remplace_tag(/\[justifier\](.+)\[\/justifier\]/g,'<span class="justifier">$1</span>',t)
t=remblaie(t)
//Couleur
t=deblaie(/(\[\/rouge\])/g,t)
t=remplace_tag(/\[rouge\](.+)\[\/rouge\]/g,'<span class="rouge">$1</span>',t)
t=remblaie(t)
t=deblaie(/(\[\/orange\])/g,t)
t=remplace_tag(/\[orange\](.+)\[\/orange\]/g,'<span class="orange">$1</span>',t)
t=remblaie(t)
t=deblaie(/(\[\/jaune\])/g,t)
t=remplace_tag(/\[jaune\](.+)\[\/jaune\]/g,'<span class="jaune">$1</span>',t)
t=remblaie(t)
t=deblaie(/(\[\/vert\])/g,t)
t=remplace_tag(/\[vert\](.+)\[\/vert\]/g,'<span class="vert">$1</span>',t)
t=remblaie(t)
t=deblaie(/(\[\/bleu\])/g,t)
t=remplace_tag(/\[bleu\](.+)\[\/bleu\]/g,'<span class="bleu">$1</span>',t)
t=remblaie(t)
t=deblaie(/(\[\/violet\])/g,t)
t=remplace_tag(/\[violet\](.+)\[\/violet\]/g,'<span class="violet">$1</span>',t)
t=remblaie(t)
t=deblaie(/(\[\/marron\])/g,t)
t=remplace_tag(/\[marron\](.+)\[\/marron\]/g,'<span class="marron">$1</span>',t)
t=remblaie(t)
t=deblaie(/(\[\/noir\])/g,t)
t=remplace_tag(/\[noir\](.+)\[\/noir\]/g,'<span class="noir">$1</span>',t)
t=remblaie(t)
t=deblaie(/(\[\/gris\])/g,t)
t=remplace_tag(/\[gris\](.+)\[\/gris\]/g,'<span class="gris">$1</span>',t)
t=remblaie(t)
//police
t=deblaie(/(\[\/arial\])/g,t)
t=remplace_tag(/\[arial\](.+)\[\/arial\]/g,'<span class="arial">$1</span>',t)
t=remblaie(t)
t=deblaie(/(\[\/times\])/g,t)
t=remplace_tag(/\[times\](.+)\[\/times\]/g,'<span class="times">$1</span>',t)
t=remblaie(t)
t=deblaie(/(\[\/courier\])/g,t)
t=remplace_tag(/\[courier\](.+)\[\/courier\]/g,'<span class="courier">$1</span>',t)
t=remblaie(t)
t=deblaie(/(\[\/impact\])/g,t)
t=remplace_tag(/\[impact\](.+)\[\/impact\]/g,'<span class="impact">$1</span>',t)
t=remblaie(t)
t=deblaie(/(\[\/verdana\])/g,t)
t=remplace_tag(/\[verdana\](.+)\[\/verdana\]/g,'<span class="verdana">$1</span>',t)
t=remblaie(t)
//Textes
t=deblaie(/(\[\/gras\])/g,t)
t=remplace_tag(/\[gras\](.+)\[\/gras\]/g,'<span class="gras">$1</span>',t)
t=remblaie(t)
t=deblaie(/(\[\/italique\])/g,t)
t=remplace_tag(/\[italique\](.+)\[\/italique\]/g,'<span class="italique">$1</span>',t)
t=remblaie(t)
t=deblaie(/(\[\/souligner\])/g,t)
t=remplace_tag(/\[souligner\](.+)\[\/souligner\]/g,'<span class="souligner">$1</span>',t)
t=remblaie(t)
t=deblaie(/(\[\/barrer\])/g,t)
t=remplace_tag(/\[barrer\](.+)\[\/barrer\]/g,'<span class="barrer">$1</span>',t)
t=remblaie(t)
t=deblaie(/(\[\/souligner_dessus\])/g,t)
t=remplace_tag(/\[souligner_dessus\](.+)\[\/souligner_dessus\]/g,'<span class="souligner_dessus">$1</span>',t)
t=remblaie(t)
t=deblaie(/(\[\/clignoter\])/g,t)
t=remplace_tag(/\[clignoter\](.+)\[\/clignoter\]/g,'<span class="clignoter">$1</span>',t)
t=remblaie(t)
t=deblaie(/(\[\/citation\])/g,t)
t=remplace_tag(/\[citation=([\s\S]*?)\](.+)\[\/citation\]/g,'<span class="citation">$1</span>',t)
t=remblaie(t)
t=deblaie(/(\[\/lien\])/g,t)
t=remplace_tag(/\[lien\](.+)\[\/lien\]/g,'<img src="$1" alt="" />',t)
t=remblaie(t)
t=deblaie(/(\[\/image\])/g,t)
t=remplace_tag(/\[image\](.+)\[\/image\]/g,'<img src="$1" alt="" />',t)
//Smileys
t=remplace_tag(/
t=remplace_tag(/:XD
t=remplace_tag(/(L)/g,'<img src="http://le.coffre.free.fr/images/smileys/heart.gif" title="heart" alt="heart" />',t)
t=remplace_tag(/:ZZZ
t=remplace_tag(/:arf
t=remplace_tag(/:yes
t=remplace_tag(/:bof
t=remplace_tag(/,(/g,'<img src="http://le.coffre.free.fr/images/smileys/cry.gif" title="cry" alt="cry" />',t)
t=remplace_tag(/:boulet
t=remplace_tag(/:lol
t=remplace_tag(/:wow
t=remplace_tag(/:...
t=remplace_tag(/:boss
t=remplace_tag(/:back
t=remplace_tag(/:gna
t=remblaie(t)
t=remblaie(t)
t=unkhol(t)
t=nl2br(t)
return t
}
<!-- tout le code qui suit c'est pour transformer toutes les balises, comme les preg_replace en PHP -->
function deblaie(reg,t)
{
textarea=new String(t);
return textarea.replace(reg,'$1\n');
}
function remblaie(t)
{
textarea=new String(t);
return textarea.replace(/\n/g,'');
}
function remplace_tag(reg,rep,t)
{
textarea=new String(t);
return textarea.replace(reg,rep);
}
function nl2br(t)
{
textarea=new String(t);
return textarea.replace(/\n/g,'<br/>');
}
function nl2khol(t)
{
textarea=new String(t);
return textarea.replace(/\n/g,ptag);
}
function unkhol(t)
{
textarea=new String(t);
return textarea.replace(new RegExp(ptag,'g'),'\n');
}
merci de m'aidé à me le faire fonctionné ce systéme d'aperçut final
merci d'avance