Partage
  • Partager sur Facebook
  • Partager sur Twitter

[JS] Prévisualisation en direct: problème

D'après deux tutos de ce site

Sujet résolu
Anonyme
    19 juillet 2006 à 12:16:57

    Salut tt le monde,

    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 -->
    <form action="index.php" method="post" name="redaction">
            <textarea name="contenu" cols="60" rows="10" ></textarea>
           
            <div id="prev"></div>
           
            <input name="auto" id="auto" type="checkbox" onClick="automatique()" /><label for="auto">Pr&eacute;visualisation automatique</label>
            <input type="button" value="Prévisualiser" onClick="previsualisation();return(false)" /><br />
    </form>


    var xhr = null// XMLHttpRequest
    var timer = 0;

    function getXhr() {
            if (window.XMLHttpRequest)      // Firefox, Opera, Safari,...
                    xhr = new XMLHttpRequest();
            else if (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()
    echo nl2br(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?
    • Partager sur Facebook
    • Partager sur Twitter

    [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.
    • Editeur
    • Markdown