Partage
  • Partager sur Facebook
  • Partager sur Twitter

[JS] Marche sous FF, foire sous IE ...

Sujet résolu
    26 décembre 2005 à 13:06:11

    Salut à tous !
    Alors voilà, j'ai suivi le Tuto Création d'un BBCode et aperçu en direct proposé dans la section, Vos Tutos afin de faire la même chose sur la nouvelle version de mon site, toujours en développement.

    Alors, j'adapte le script à mes besoins, etc ...
    Mais voilà, tout fonctionne correctement sous Mozilla Firefox ^^
    Petit bémol, rien ne fonctionne sous Internet Explorer :(

    Pour être plus précis, seul la prévisualisation en direct de ce qu'on écrit ne fonctionne pas sous IE ...

    Voici mes deux pages : L'une contient le formulaire avec le div de prévisualisation et l'autre est la page prev.js à inclure entre <head></head> ...

    <html>

    <head>
    <title></title>
    <script language="javascript" type="text/javascript" src="<? echo $path; ?>includes/prev.js"></script><!-- on appelle le fichier prev.js pour faire fonctionne la prévisualisation -->
    <script language="Javascript">
    <!--
    function bbcode(bbdebut, bbfin)
    {
    var input = window.document.form.contenu;
    input.focus();
    /* pour IE (toujous un cas appar lui ;) )*/
    if(typeof document.selection != 'undefined')
    {
    var range = document.selection.createRange();
    var insText = range.text;
    range.text = bbdebut + insText + bbfin;
    range = document.selection.createRange();
    if (insText.length == 0)
    {
    range.move('character', -bbfin.length);
    }
    else
    {
    range.moveStart('character', bbdebut.length + insText.length + bbfin.length);
    }
    range.select();
    }
    /* pour les navigateurs plus récents que IE comme Firefox... */
    else if(typeof input.selectionStart != 'undefined')
    {
    var start = input.selectionStart;
    var end = input.selectionEnd;
    var insText = input.value.substring(start, end);
    input.value = input.value.substr(0, start) + bbdebut + insText + bbfin + input.value.substr(end);
    var pos;
    if (insText.length == 0)
    {
    pos = start + bbdebut.length;
    }
    else
    {
    pos = start + bbdebut.length + insText.length + bbfin.length;
    }
    input.selectionStart = pos;
    input.selectionEnd = pos;
    }
    /* pour les autres navigateurs comme Netscape... */
    else
    {
    var pos;
    var re = new RegExp('^[0-9]{0,3}$');
    while(!re.test(pos))
    {
    pos = prompt("
    insertion (0.." + input.value.length + "):", "0");
    }
    if(pos >
    input.value.length)
    {
    pos = input.value.length;
    }
    var insText = prompt("Veuillez taper le texte&quot;);
    input.value = input.value.substr(0, pos) + bbdebut + insText + bbfin + input.value.substr(pos);
    }
    }
    function smilies(img, textarea)
    {
    window.document.form.textarea.value += '' + img + '';
    }
    -->
    </script>
    </head>

    <body>

    <div class="header_bloc">
            <img src="<? echo $path; ?>
    img/design/fleche.gif" alt="" title="" />
            Messagerie => Boîte de Réception => Ecrire
    </div>

    <div class="bloc">
            <div style="margin-left:5px;">
            <div style="margin-bottom:10px;">
            <a href="<? echo $path; ?>membres/membre.php?page=messagerie"><img src="<? echo $path; ?>img/membres/icon_boite_reception.gif" alt="" title="" /></a>
            </div>
    <?

            // Etape 1 : Envoi.
           
            if (isset($_POST['envoi']) &&
                    isset($_POST['id_recepteur']) &&
                    isset($_POST['MP_titre']) &&
                    isset($_POST['contenu']) )
            {
                    if ($_POST['id_recepteur'] != NULL &&
                            $_POST['MP_titre'] != NULL &&
                            $_POST['contenu'] != NULL)
                    {
                            // On créé des variables anti-html
                            $id_envoyeur = $_SESSION['id'];
                            $id_recepteur = $_POST['id_recepteur'];
                            $MP_titre = htmlentities($_POST['MP_titre']);
                            $contenu = htmlentities($_POST['contenu']);
                           
                            // On ajoute le message dans la table
                            mysql_query("INSERT INTO `messages_prives` VALUES('', '$id_envoyeur', '$id_recepteur', '$MP_titre', '$contenu', '" . time() . "', '0') ") or die (mysql_error());
                           
                            // Message afin de dire que le message a bien été envoyé
                            echo ('
            <div align="center" style="font-size:10px; color:#00CC00; text-decoration:underline; font-weight:bold; width:300px; padding:10px; border-style:dashed; border-width:1px; background-color:#D8F1D8; margin:auto;">

                    Votre message privé a été envoyé avec succès.<br /><a href="' . $path . 'membres/membre.php?page=messagerie">Revenir à votre boîte de réception.</a>
            </div>');
                    }
                    else
                    {
                            echo 'Il manque des informations primordiales pour l\'envoi de votre message privé.';
                            $erreur = true;
                    }
            }
           
            // Etape 2 : Formualire.
            if ( !isset($_POST['envoi']) || $erreur == true )
            {
    ?>
            <form name="form" action="membre.php?page=messagerie&amp;etape=envoi" method="POST">
                    <div style="margin-left:10px; margin-right:20px; margin-top:10px; padding:3px; border-style:solid; border-width:1px; border-color:#000000;">
                            <div style="width:100px; float:left;" class="souligne">Envoyer à :</div>
                                    <div><select name="id_recepteur" class="champ">
                                    <?
                                            $sql = mysql_query("SELECT `USER_id`, `USER_pseudo` FROM `membres` ORDER BY `USER_pseudo` &quot;) or die (mysql_error());
                                            while ($donnees = mysql_fetch_array($sql) )
                                            {
    ?>

            <option value="<? echo $donnees['USER_id']; ?>" <? if (@$_GET['id_envoyeur'] == $donnees['USER_id']) { echo 'selected'; } ?>><? echo $donnees['USER_pseudo']; ?></option>
    <?
                                            }
                                    ?>

                                    </select></div>
                            <div style="width:100px; float:left;" class="souligne">Titre :</div> <div><input type="text" name="MP_titre" class="champ" size="60" value="<? echo @stripslashes($_POST['MP_titre']); ?>" /></div>
                            <div style="margin:5px; border-bottom-width:1px; border-top-width:1px; border-top-style:solid; border-bottom-style:solid; padding:2px;">
                                            <input type="button" class="button" value="B" name="gras" id="gras" onClick="javascript:bbcode('[gras]', '[/gras]');return(false)" style="font-weight:bold;" />
                                            <input type="button" class="button" value="I" onClick="javascript:bbcode('[italique]', '[/italique]');return(false)" style="font-style:italic;" />
                                            <input type="button" class="button" value="U" onClick="javascript:bbcode('[souligne]', '[/souligne]');return(false)" style="text-decoration:underline;" />
                                            <input type="button" class="button" value="IMG" onClick="javascript:bbcode('[image]', '[/image]');return(false)" />
                                            <input type="button" class="button" value="URL" onClick="javascript:bbcode('[url= ]', '[/url]');return(false)" />
                                            <input type="button" class="button" value="CODE" onClick="javascript:bbcode('[code]', '[/code]');return(false)" />
                                            <input type="button" class="button" value="QUOTE" onClick="javascript:bbcode('[citation]', '[/citation]');return(false)" />
                                            <select class="champ" style="margin:0px; width:70px;">
                                                    <option>Couleur</option>
                                                    <option value="Blanc" onClick="blanc(form)" style="color:white;">Blanc</option>
                                                    <option value="Argent" onClick="argent(form)" style="color:silver;">Argent</option>
                                                    <option value="Gris" onClick="gris(form)" style="color:gray;">Gris</option>
                                                    <option value="Noir" onClick="noir(form)" style="color:black;">Noir</option>
                                                    <option value="Rouge" onClick="rouge(form)" style="color:red;">Rouge</option>
                                                    <option value="Marron" onClick="marron(form)" style="color:maroon;">Marron</option>
                                                    <option value="Vert" onClick="vert(form)" style="color:lime;">Vert</option>
                                                    <option value="Vert Foncé" onClick="vert_fonce(form)" style="color:green;">Vert Foncé</option>
                                                    <option value="Jaune" onClick="jaune(form)" style="color:yellow;">Jaune</option>
                                                    <option value="Olive" onClick="olive(form)" style="color:olive;">Olive</option>
                                                    <option value="Bleu" onClick="bleu(form)" style="color:blue;">Bleu</option>
                                                    <option value="Bleu Marine" onClick="bleu_marine(form)" style="color:navy;">Bleu Marine</option>
                                                    <option value="Fuchsia" onClick="fuchsia(form)" style="color:fuchsia;">Fuchsia</option>
                                                    <option value="Violet" onClick="violet(form)" style="color:purple;">Violet</option>
                                                    <option value="Aqua" onClick="aqua(form)" style="color:aqua;">Aqua</option>
                                                    <option value="Teal" onClick="teal(form)" style="color:teal;">Teal</option>
                                            </select>
                                            <select class="champ" style="margin:0px;">
                                                    <option>Alignement</option>
                                                    <option value="Gauche" onClick="gauche(form)" style="text-align:left;">Gauche</option>
                                                    <option value="Centré" onClick="centre(form)" style="text-align:center;">Centré</option>
                                                    <option value="Droite" onClick="droite(form)" style="text-align:right;">Droite</option>
                                            </select>
                                            <select class="champ" style="margin:0px;">
                                                    <option>Taille</option>
                                                    <option value="8" onClick="size8(form)">8</option>
                                                    <option value="9" onClick="size9(form)">9</option>
                                                    <option value="10" onClick="size10(form)">10</option>
                                                    <option value="11" onClick="size11(form)">11</option>
                                                    <option value="12" onClick="size12(form)">12</option>
                                                    <option value="14" onClick="size14(form)">14</option>
                                                    <option value="16" onClick="size16(form)">16</option>
                                                    <option value="18" onClick="size18(form)">18</option>
                                                    <option value="24" onClick="size24(form)">24</option>
                                            </select>
                                            <select class="champ" style="margin:0px;">
                                                    <option>Flottant</option>
                                                    <option value="Gauche" onClick="f_gauche(form)" style="text-align:left;">Gauche</option>
                                                    <option value="Centré" onClick="f_centre(form)" style="text-align:center;">Centré</option>
                                                    <option value="Droite" onClick="f_droite(form)" style="text-align:right;">Droite</option>
                                            </select>
                                            <br /><div style="margin-top:2px;">
                                            <img src="<? echo $path; ?>img/smilies/icon_wink.gif" alt=";)" onClick="sm1(form)" style="cursor:pointer;" />
                                            <img src="<? echo $path; ?>img/smilies/icon_cry.gif" alt=":'(" onClick="sm2(form)" style="cursor:pointer;" />
                                            <img src="<? echo $path; ?>img/smilies/icon_razz.gif" alt=":P" onClick="sm3(form)" style="cursor:pointer;" />
                                            <img src="<? echo $path; ?>img/smilies/icon_arrow.gif" alt="::>" onClick="sm4(form)" style="cursor:pointer;" />
                                            <img src="<? echo $path; ?>img/smilies/icon_biggrin.gif" alt=":D" onClick="sm5(form)" style="cursor:pointer;" />
                                            <img src="<? echo $path; ?>img/smilies/icon_confused.gif" alt=":S" onClick="sm6(form)" style="cursor:pointer;" />
                                            <img src="<? echo $path; ?>img/smilies/icon_cool.gif" alt="8-)" onClick="sm7(form)" style="cursor:pointer;" />
                                            <img src="<? echo $path; ?>img/smilies/icon_eek.gif" alt="O_O" onClick="sm8(form)" style="cursor:pointer;" />
                                            <img src="<? echo $path; ?>img/smilies/icon_evil.gif" alt=":evil:" onClick="sm9(form)" style="cursor:pointer;" />
                                            <img src="<? echo $path; ?>img/smilies/icon_exclaim.gif" alt=":!:" onClick="sm10(form)" style="cursor:pointer;" />
                                            <img src="<? echo $path; ?>img/smilies/icon_idea.gif" alt=":idee:" onClick="sm11(form)" style="cursor:pointer;" />
                                            <img src="<? echo $path; ?>img/smilies/icon_lol.gif" alt=":lol:" onClick="sm12(form)" style="cursor:pointer;" />
                                            <img src="<? echo $path; ?>img/smilies/icon_mad.gif" alt=":@" onClick="sm13(form)" style="cursor:pointer;" />
                                            <img src="<? echo $path; ?>img/smilies/icon_mrgreen.gif" alt=":mrgreen:" onClick="sm14(form)" style="cursor:pointer;" />
                                            <img src="<? echo $path; ?>img/smilies/icon_neutral.gif" alt=":|" onClick="sm15(form)" style="cursor:pointer;" />
                                            <img src="<? echo $path; ?>img/smilies/icon_question.gif" alt=":?:" onClick="sm16(form)" style="cursor:pointer;" />
                                            <img src="<? echo $path; ?>img/smilies/icon_redface.gif" alt=":gene:" onClick="sm17(form)" style="cursor:pointer;" />
                                            <img src="<? echo $path; ?>img/smilies/icon_rolleyes.gif" alt=":roll:" onClick="sm18(form)" style="cursor:pointer;" />
                                            <img src="<? echo $path; ?>img/smilies/icon_sad.gif" alt=":(" onClick="sm19(form)" style="cursor:pointer;" />
                                            <img src="<? echo $path; ?>img/smilies/icon_smile.gif" alt=":)" onClick="sm20(form)" style="cursor:pointer;" />
                                            <img src="<? echo $path; ?>img/smilies/icon_surprised.gif" alt=":O" onClick="sm21(form)" style="cursor:pointer;" />
                                            <img src="<? echo $path; ?>img/smilies/icon_twisted.gif" alt=":malefique:" onClick="sm22(form)" style="cursor:pointer;" />
                            </div></div>
                            <div style="width:100px; float:left;" class="souligne">Contenu :</div> <div><textarea name="contenu" class="champ" cols="80" rows="12"><? echo @stripslashes($_POST['contenu']); ?></textarea></div>
                            <hr width="300" size="1" />
                            <div style="width:100px; height:50px; float:left;" class="souligne">Prévisualisation :</div>
                            <div><div><input name="auto" id="auto" type="checkbox" onClick="automatique()" /> <label for="auto">Prévisualisation automatique</label></div>
                            <div style="border-width:1px; border-style:dashed; padding:2px; height:200px; overflow:auto; width:440px; background-color:#EBEDF0;" class="champ" align="left" id="prev">&nbsp;</div></div>
                            <div style="margin-left:20px; margin-right:20px; margin-top:10px; padding:3px; border-style:solid; border-width:1px; border-color:#000000; background-color:#4C79A6;">
                                    <div style="text-align:center;">
                                    <input type="submit" name="envoi" value="Envoyer" class="button" />
                                    </div>
                            </div>
                    </div>
            </form>
    <?
            }
    ?>

            </div>
    </div>

    <div class="footer_bloc">
    </div>

    </body>
    </html>


    var timer=0;
    var ptag=String.fromCharCode(5,6,7);
    function previsualisation() {
    t=document.form.contenu.value
    t=code_to_html(t)
    if (document.getElementById) document.getElementById("prev").innerHTML=t
    if (document.form.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.form.auto.checked) previsualisation() <!-- si on a cocher la case d'
    aperçu automatique -->
    }
    function code_to_html(t) {
    t=nl2khol(t)
    // balise Gras <!-- on lui dis que telles balises correspondent à tels codes en HTML -->
    t=deblaie(/(\[\/gras\])/g,t)
    t=remplace_tag(/\[gras\](.+)\[\/gras\]/g,'<span style="font-weight: bold;">$1</span>',t)
    t=remblaie(t)

    // balise Italique
    t=deblaie(/(\[\/italique\])/g,t)
    t=remplace_tag(/\[italique\](.+)\[\/italique\]/g,'<span style="font-style: italic;">$1</span>',t)
    t=remblaie(t)

    // balise Souligne
    t=deblaie(/(\[\/souligne\])/g,t)
    t=remplace_tag(/\[souligne\](.+)\[\/souligne\]/g,'<span style="text-decoration:underline;">$1</span>',t)
    t=remblaie(t)

    // balise Citation
    t=deblaie(/(\[\/citation\])/g,t)
    t=remplace_tag(/\[citation\](.+)\[\/citation\]/g,'<div align="center" style="width:auto; margin-left:20px; margin-right:20px; border-width:1px; border-style:dashed; font-style:italic; text-align:left; padding:2px; background-color:#EEEEEE; color:#888888;">$1</div>',t)
    t=remblaie(t)

    // balise Image
    t=deblaie(/(\[\/image\])/g,t)
    t=remplace_tag(/\[image\](.+)\[\/image\]/g,'<img src="$1" />',t)
    t=remblaie(t)

    // balise Code
    t=deblaie(/(\[\/code\])/g,t)
    t=remplace_tag(/\[code\](.+)\[\/code\]/g,'<div align="center" style="width:auto; margin-left:20px; margin-right:20px; border-width:1px; border-style:dashed; border-color:green; color:green; font-family:Courier New, Courier, mono; text-align:left; padding:2px; background-color:#EEFBEF;">$1</div>',t)
    t=remblaie(t)

    // balise Couleur
    t=deblaie(/(\[\/couleur\])/g,t)
    t=remplace_tag(/\[couleur=(white|silver|gray|black|red|maroon|lime|green|yellow|olive|blue|navy|fuchsia|purple|aqua|teal)\](.+)\[\/couleur\]/g,'<span style="color:$1">$2</span>',t)
    t=remblaie(t)

    // balise Taille
    t=deblaie(/(\[\/taille\])/g,t)
    t=remplace_tag(/\[taille=(8|9|10|11|12|14|16|18|24)\](.+)\[\/taille\]/g,'<span style="font-size:$1px">$2</span>',t)
    t=remblaie(t)

    // balise URL   
    t=deblaie(/(\[\/url\])/g,t)
    t=remplace_tag(/\[\url=([\s\S]*?)\](.+)\[\/url\]/g,'<a href="$1" target="_blank">$2</a>',t)
    t=remblaie(t)

    // smilies Smile <!-- on oublie pas les smilies -->
    t=remplace_tag(/:D/g,'<img src="http://www.maxjeuxvideo.info/img/smilies/icon_biggrin.gif" alt=":D" title=":D" />',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) {
    contenu=new String(t);
    return contenu.replace(reg,'
    $1\n');
    }
    function remblaie(t) {
    contenu=new String(t);
    return contenu.replace(/\n/g,'
    ');
    }
    function remplace_tag(reg,rep,t) {
    contenu=new String(t);
    return contenu.replace(reg,rep);
    }
    function nl2br(t) {
    contenu=new String(t);
    return contenu.replace(/\n/g,'
    <br/>');
    }
    function nl2khol(t) {
    contenu=new String(t);
    return contenu.replace(/\n/g,ptag);
    }
    function unkhol(t) {
    contenu=new String(t);
    return contenu.replace(new RegExp(ptag,'
    g'),'\n');
    }   


    Message d'erreur sous IE :

    Citation : Erreur Internet Explorer

    Ligne : 86
    Car : 1
    Erreur : Cet objet ne gère pas cette propriété ou cette méthode
    Code : 0
    URL : (L'url de ma page)



    Voilà ... Etant une quille en JS, et avoir fait plusieurs recherches/tests pour essayerde résoure mon problème, j'en viens à vous ... Pouvez-vous m'aider ?

    Merci d'avance ^^
    • Partager sur Facebook
    • Partager sur Twitter
      27 décembre 2005 à 11:52:47

      Un petit UP :-°
      Vous ne voyez vraiment pas comment y remédier ? :(
      Merci d'avance.

      Lelexso
      • Partager sur Facebook
      • Partager sur Twitter

      [JS] Marche sous FF, foire sous IE ...

      × 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