Je fais un système de prévisualisation en direct, et je me suis inspiré de ce tuto et de celui-ci, pour utiliser markdown au lieu du bbcode.
Mon code marchait correctement sur Safari, puis en testant sur Firefox, cela n'allait pas. Et depuis, plus non plus avec Safari... J'ai sûrement dû changer un détail, mais là j'avoue ne m'être rendu compte de rien! Qu'en pensez-vous?
<!-- FORMULAIRE DE REDACTION avec prévisualisation en direct --> <formaction="index.php"method="post"name="redaction"> <textareaname="contenu"cols="60"rows="10"></textarea>
function getXhr(){ if(window.XMLHttpRequest)// Firefox, Opera, Safari,...
xhr = new XMLHttpRequest(); elseif(window.ActiveXObject){// IE try{
xhr = new ActiveXObject("Msxml2.XMLHTTP"); } catch(e){
xhr = new ActiveXObject("Microsoft.XMLHTTP"); } } else{// XMLHttpRequest n'est pas supporté par le navigateur alert("Votre navigateur ne supporte pas cette fonction, essayez avec Firefox.");
xhr = false; } }
/* Effectue la prévisualisation, en appelant js_xhr.php qui effectue la transformation de markdown en html */ function previsualisation(){
getXhr(); // On effectue le traitement dès que le server est ok
xhr.onreadystatechange = function(){ if(xhr.readyState == 4 && xhr.status == 200){ var texte = document.redaction.contenu.value; // On récupère le texte du formulaire if(document.getElementById){
document.getElementById("prev").innerHTML = xhr.responseText; if(document.redaction.auto.checked)
timer = setTimeout(previsualisation(),500); } }
xhr.open('POST','js_xhr.php',true); // Ouverture de la connexion
xhr.setRequestHeader('Content-type','application/x-www-form-urlencoded'); // En-tête pour POST var data = 'texte='+escape(texte); // Formatage de la requête
xhr.send(data); // Envoi de la requête }
function automatique(){ if(document.redaction.auto.checked)
previsualisation(); }
<?php
/* Fait le lien depuis la fonction javascript de prévisualisation en direct vers phpmarkdown */
header('Content-type: text/html; charset=iso-8859-1'); include('../pages/markdown.php'); // Besoin de la fonction markdown() echonl2br(htmlentities(markdown($_POST['texte']),ENT_QUOTES)); // On affiche le HTML
?>
Et petite question supplémentaire; ici, il faut cocher une case pour avoir la prévisualisation automatique. Comment faire pour que celle-ci soit automatique, sans case à cocher ou bouton?
[JS] Prévisualisation en direct: problème
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.