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 :

JavaScript entre le côté serveur et le côté client / local


Sujet :

JavaScript

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Analyse système
    Inscrit en
    Mai 2014
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2014
    Messages : 1
    Points : 1
    Points
    1
    Par défaut JavaScript entre le côté serveur et le côté client / local
    Salut tout le monde,

    Voilà un problème que je n'ai encore jamais eu ! Un JavaScript de rien du tout fonctionne impeccablement en mode local (localhost) mais n'affiche rien en remote (sur le site) ! Quid ?

    Le script est le suivant (bien entendu les "textes" dans {} sont remplacés par un script php par les contenus adéquats) :

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    arg = 15;
    function show_text() {
    	if (arg > 0) {
    		ms = "<p><font color=\"#ffff00\"><h1>{texte0}</h1></p><p><h2>{texte1} ...</h2></p><p><h4>{texte2}<br />{texte3}<br />{texte4}<br />{texte5}.</h4></p>";
    		ms += "<p><h2>{texte6} " + arg + " {texte7}.</p><p></h2></font></h2></p>";
    		window.status = "{texte8} " + arg + " {texte9}!";
    	} else {
    		ms = "<p><font color=\"#ffff00\"><h1>{texte0}<br />{texte10}.</h1></p><p><h2>{texte11}<br/>{texte12}.</h2></p><p><h1>{texte13} ...</h1></p></font>";
    		window.status = "{texte14}?";
    	}
    	document.getElementById("text_box").innerHTML = ms;
    	arg--;
    	if (arg > -1) setTimeout('show_text()', 1000);
    }

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <center><div style="text-align:center;height:50%;width:50%;left:25%;top:25%;" border="1" bgcolor="#ffffcc" id="text_box"><script language="javascript" type="text/javascript">show_text();</script></div></center>

    Que ce soit comme en haut ou ici, rien n'y change rien :

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    arg--;
    if (arg > -1) setTimeout('show_text()', 1000);
    }
    show_text();

    Quelqu'un a-t-il des suggestions ?
    Merci par avance !

  2. #2
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 093
    Points : 6 754
    Points
    6 754
    Par défaut
    Bonsoir.

    Tu as un problème conceptuel assez courant : tu confonds les environnements d'exécution serveur et client. Ton serveur interprète du PHP. Il ne comprend pas le code JavaScript. Il génère du code source JavaScript mais le voit comme du simple texte.

    Quand le code source JavaScript arrive côté client, normalement toutes les chaînes de texte ont déjà été substituées par PHP. Et à mon avis ton problème est là : tu as une différence de config qui fait que le texte généré n'est pas le même, et provoque une erreur JavaScript quand le client essaye d'interpréter le code source qu'il a reçu.

    Ouvre la console de ton navigateur (F12) et tu verras probablement l'erreur.

    Quelques remarques secondaires :
    • Les balises <font> et <center> sont obsolètes. Fais-toi une feuille de styles et place-la dans le <head>, ça rendra en même temps ton code HTML plus clair et plus facile à maintenir.
    • Idem pour les attributs color, bgcolor et border. Tout ce qui gère l'apparence doit être traité par CSS et pas par HTML.
    • L'attribut language de la balise <script>… Obsolète lui-aussi ! Tu peux le retirer sans problème.
    • Écris setTimeout(show_text, 1000); au lieu de setTimeout('show_text()', 1000); : c'est plus efficace car tu passes directement la référence de ta fonction, au lieu d'obliger l'interpréteur à analyser une chaîne.
    • window.status est obsolète et carrément inutile, à moins que tu développes pour des clients précis qui utilisent de très, très vieux navigateurs…
    • Il va falloir que tu revoies sérieusement ton code HTML. Observe avec l'onglet « Inspecteur » de ta console comment le HTML généré par ton script est construit… À mon avis ce n'est pas exactement ce que tu attends ! Ton code est ambigü et le navigateur est obligé de deviner. Laisser le navigateur deviner, ce n'est jamais prudent. Lle HTML sert à structurer, pas à présenter. Comme je l'ai déjà dit, présenter, ça c'est le rôle de CSS. Quelques rappels élémentaires :
      • <h1>, <h2> etc. sont des titres. Ils sont hiérachisés par importance : <h1> est un titre principal, <h2> un titre secondaire, etc.
      • <p> signifie paragraphe. Techniquement tu as le droit de mettre un titre dans un paragraphe, mais ça n'a pas beaucoup de sens.
    • Un petit tour sur le Jardin Zen CSS pourrait te faire du bien
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

Discussions similaires

  1. Probleme javascript entre IE et Firefox
    Par yobogs dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 09/02/2006, 21h58
  2. question javascript entre < et &#60;
    Par hutchuck dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 17/01/2006, 11h24
  3. Partager du code Javascript entre plusieurs pages HTML
    Par oceane751 dans le forum Général JavaScript
    Réponses: 29
    Dernier message: 10/01/2006, 15h20
  4. Comment minimiser le trafic réseau entre appli et serveur ?
    Par delphi+ dans le forum Bases de données
    Réponses: 3
    Dernier message: 06/10/2004, 14h43
  5. Différence entre SGBD et Serveur d'application
    Par WOLO Laurent dans le forum Langage SQL
    Réponses: 2
    Dernier message: 30/06/2003, 08h47

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