IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

mozilla et javascript


Sujet :

JavaScript

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 8
    Points : 5
    Points
    5
    Par défaut mozilla et javascript
    bonjour à tous.

    voila, j'ai un problème que je n'arrive pas à résoudre pour l'instant.

    Firefox (derniere version) ne veut pas reconnaitre la fonction, pourtant, elle marche avec IE

    ça fait plusieures heures que je passe dessus, et après x et x tests , rien à faire, j'espére que vous pourrez eclairer ma lanterne .

    Il sagit d'une fonction javascript pour envoyer des panneaux dans un forum.

    En fait, vaut mieux un exemple pour mieux expliquer, le voici ici, c'est un forum de tests ou les visiteurs peuvent poster.

    Forum de test

    donc, j'appelle les panneaux avec un textselect (Selectionnez vos smileys)

    <SELECT size="1" class=form
    onchange="envoieRequete(this.options[this.selectedIndex].value,'header');">

    <OPTION VALUE="" SELECTED>Selectionnez vos Smileys</OPTION>
    <OPTION VALUE="Srires.php">Rires Heureux Oeils Sauts</OPTION>
    <OPTION VALUE="SOui.php">Oui Non Moqueurs</OPTION>
    <OPTION VALUE="SAnges.php">Anges Demons</OPTION>
    <OPTION VALUE="SAmour.php">Amour</OPTION>
    <OPTION VALUE="SFete.php">Fête</OPTION>
    <OPTION VALUE="SMusique.php">Musique</OPTION>
    <OPTION VALUE="SConfus.php">Confus Etonnés Mefiants</OPTION>
    <OPTION VALUE="SPleurs.php">Fatigués Pleurs tristes</OPTION>
    <OPTION VALUE="SColere.php">Colère Méchants Violents</OPTION>
    <OPTION VALUE="pan.php">Panneaux</OPTION>
    <OPTION VALUE="SDefau.php">Par défaut</OPTION>

    </SELECT>
    et ce textselect affiche les differentes pages de smileys dans un <div id="header">

    géré par une fonction:

    <script language="javascript">
    function envoieRequete(url,id)
    {
    var xhr_object = null;
    var position = id;
    if(window.XMLHttpRequest) xhr_object = new XMLHttpRequest();
    else
    if (window.ActiveXObject) xhr_object = new ActiveXObject("Microsoft.XMLHTTP");

    // On ouvre la requete vers la page désirée
    xhr_object.open("GET", url, true);
    xhr_object.onreadystatechange = function(){
    if ( xhr_object.readyState == 4 )
    {
    // j'affiche dans la DIV spécifiées le contenu retourné par le fichier
    document.getElementById(position).innerHTML = xhr_object.responseText;
    }
    }
    // dans le cas du get
    xhr_object.send(null);
    }
    </script>
    Les smileys marchent bien (avec IE et FF), ça envoie le bbcode dans le post du message.
    Mais le problème vient avec les Panneaux, ou il sagit de renvoyer un input texte :

    <input type="text" size="18" maxlength="250" name="messagePan" value="Ecrivez votre texte ici" id="messagePan">

    <a href="javascript:;" onclick="envoiPan(7);Compter(formulaire.msg, formulaire.limitchar);">
    <img src="smileys/silly.gif" border="0" width="25" height="24"></a>
    et là, IE envoie le BBcode, mais avec FF rien à faire !

    la fonction qui envoie les panneaux :
    <script language="javascript">
    function envoiPan(pann)
    {
    panneau = document.formulaire.messagePan.value;
    textselect=document.formulaire.msg;
    if(ie)
    {
    if(textselect.c)
    textselect.c.text=textselect.c.text + " " + (' [swf]url:pan/px') + pann + ('.swf?zonetxt=') + panneau + " " + ('largeur:350 hauteur:60 [/swf] ') + " ";
    else
    textselect.value += " " +('[swf]url:pan/px') + pann + ('.swf?zonetxt=') + panneau + " " + ('largeur:350 hauteur:60 [/swf] ') + " ";
    }


    else if(moz)
    {
    StartPos = textselect.selectionStart;
    EndPos = textselect.selectionEnd;
    LengthPos = EndPos - StartPos;

    textselect.value = textselect.value.substr(0,StartPos) + " " + (' [swf]url:pan/px') + pann + ('.swf?zonetxt=') + panneau + " " + ('largeur:350 hauteur:60 [/swf] ') + " " + textselect.value.substr(EndPos);

    }
    textselect.focus();
    document.formulaire.messagePan.value = " ";
    }
    </script>
    l'input text n'est pas directement placé dans le <div> ça fait que FF ne reconnait pas la function envoiPan(pann)

    une idée ?

  2. #2
    Membre éprouvé Avatar de Herode
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2005
    Messages
    825
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 825
    Points : 933
    Points
    933
    Par défaut
    A vue de nez, ça me parait logique puisque :
    1 - appel de fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    onchange="envoieRequete(this.options[this.selectedIndex].value,'header');">
    2 - mise à jour du code HTML :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById(position).innerHTML = xhr_object.responseText;
    où position reçoit comme valeur 'header'.
    3 - lecture :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    panneau = document.formulaire.messagePan.value;
    où tu recherches un élément nommé 'messagePan' qui a été placé dans l'élément d'id 'header' et non pas dans un formulaire. Par conséquent, la propriété formulaire.messagePan n'existe pas.

    Pour corriger ça, passer le bon id à la fonction envoieRequete (mais le formulaire n'a pas d'id pour l'instant...).

    Note que de toutes manières, le résultat n'est pas garanti :
    validation HTML

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 8
    Points : 5
    Points
    5
    Par défaut

    je suis un bricolou

    je pensais pas avoir autant d'erreurs au niveau validation HTML

    IE transmet la requette , il est vraiment moins preci que FF.

    Merci pour ta réponse .

    Sinon, je fait comment exactement pour passer le bon id à la fonction envoieRequete ?
    et pour mettre un id sur le formulaire ?
    faut que je change quelque chose ici ? :

    <input type="text" size="18" maxlength="250" name="messagePan" value="Ecrivez votre texte ici" id="messagePan">

    <a href="javascript:;" onclick="envoiPan(7);Compter(formulaire.msg, formulaire.limitchar);">
    <img src="smileys/silly.gif" border="0" width="25" height="24"></a>
    ou tout simplement de renommer <div id="header"> en <div id="messagePan"> ?

    ça m'interresse, mais j'ai pas le niveau pour l'instant, alors, je veux juste que ça fonctionne sous FireFox.

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 8
    Points : 5
    Points
    5
    Par défaut


    j'y arrive pas
    pourtant la réponse semble logique.
    Mais dans ce cas, pourquoi IE trouve le chemin ?

  5. #5
    Membre éprouvé Avatar de Herode
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2005
    Messages
    825
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 825
    Points : 933
    Points
    933
    Par défaut
    Non, ma réponse n'était pas bonne. J'ai cru que ta fonction envoieRequete() remplissait le formulaire. En fait, elle remplit le panneau de smileys. Le problème n'est pas là.

    Par contre, si tu actives ton déboggeur javascript sous IE, tu verras que tu as des erreurs dans la fonction Compter(). Il est probable que IE absorbe cette erreur tandis que Mozilla (ou Opera, qui n'affiche pas non plus le résultat) arrêtent le traitement.

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    ok, j'ai cherché de se côté.

    J'ai bien une fonction compter dans l'entête , la voici :

    <script language="javascript">
    <!--
    var wysiwyg = false;

    function Compter(Target, nomchamp)
    {
    var regexp = new RegExp("\\\r\\\n|\\\r|\\\n","gi");
    var HtmlLess = Target.value.replace(regexp,"");

    StrLen = HtmlLess.length
    if (StrLen > {%::LimiteLength%} && {%::LimiteLength%}>0)
    {
    Target.value = Target.value.substring(0,{%::LimiteLength%});
    CharsLeft = {%::LimiteLength%};
    }
    else
    {
    CharsLeft = StrLen;
    }
    nomchamp.value = CharsLeft;
    }
    -->
    </script>
    mais là , c'est du chinois pour moi

  7. #7
    Membre éprouvé Avatar de Herode
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2005
    Messages
    825
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 825
    Points : 933
    Points
    933
    Par défaut
    Houla. Si tu ne sais pas ce que tu as codé, ça va être difficile de t'aider
    En tout cas d'après le déboggueur ça plante sur cette ligne là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nomchamp.value = CharsLeft;
    car nomchamp est undefined.
    Si tu n'as pas de déboggueur, installe-en un d'urgence, ça ira mieux
    (NB : sous Firefox, tu as par exemple le module Firebug qui est facile à installer et qui aide beaucoup à analyser ses pages).

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Bon, ben ça y est

    voici l'endroit ou ça clochait :

    j'ai remplacé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    panneau = document.formulaire.messagePan.value;

    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    panneau = document.getElementById("messagePan").value;
    et miracle ça marche avec firefox

    Merci quand même a ceux qui se sont penchés sur le probléme

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [mozilla] Transformation XSLT avec javascript...
    Par Spack dans le forum Général JavaScript
    Réponses: 14
    Dernier message: 16/02/2011, 01h04
  2. javascript, GotoFrame et Mozilla
    Par mdelteil dans le forum Flash
    Réponses: 3
    Dernier message: 13/07/2006, 12h35
  3. Dimensions cellules Mozilla perturbées par javascript
    Par speedev dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 07/06/2006, 10h46
  4. javascript et mozilla
    Par lyon31 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 27/03/2006, 14h19
  5. javascript mozilla
    Par zizou771 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 12/01/2006, 11h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo