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 :

Un document.write qui désorganise la page


Sujet :

JavaScript

  1. #1
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut Un document.write qui désorganise la page
    Bonjour

    Je suis confronté à un souci que je ne comprends absolument pas et je ne sais pas comment m'en sortir.

    Tout d'abords, la page permettant de constater la chose se trouve là :
    http://pub.ozouf.com/testpub.htm.

    Pour voir le souci il faut l'ouvrir sur FF, elle est bien, puis sur IE, elle est pourrie.

    J'ai réussi à déterminer que le problème venait d'un script qui envoi un document.write.
    En gros si je met ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <script type="text/javascript" src="http://tracking.publicidees.com/showbanner.php?partid=5211&progid=467&promoid=31797"></script>
    ça démonte la page et si j emet ce que fait le document.write en dur tout va bien. En allant directement sur le script et en prenant la source de la page générée j'ai trouvé ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    document.write('<a href="http://tracking.publicidees.com/clic.php?promoid=31797&progid=467&partid=5211&iptChange=0&iptJS=03be8a4dbbddc0977e4b3b1a93df1b64"  target="_blank" Onmouseover="window.status=\'\'">');
    document.write('<img src="http://ad.publicidees.com/promos/banners/278/468x60_3.gif" border="0">');
    document.write('</a>');
    Et donc je ne comprends pas comment une aussi petit différence peut metre à mal la totalité de la page et surtout en le faisant au dessus et pas en dessous.

    Pourriez vous éclairer ma lanterne ?

    Merci d'avance.

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 643
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 643
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1

  3. #3
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    Merci pour ton lien, mais j'ai du mal à comprendre où cela m'apporte de l'aide.

    Tu pourrais déveloper un peu ?

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 643
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 643
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    Ben juste que document.write est à peu près la pire des choses à faire en javascript car c'est destructeur

  5. #5
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    Ok, c'est ce que j'avais cru comprendre.

    Maintenant, vu que je ne maitrise pas le script (tu auras remarqué qu'il est envoyé par un autre site que le mien) je peux faire quoi ?

  6. #6
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 643
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 643
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    utiliser le DOM pour créer les objets sur la page

  7. #7
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    Là, je pense que mon niveau de connaisasnce en JavaScript vient d'être largement dépassé.

    Mais je pense que j'ai oublié de précisé un détail :
    dans mon site je mets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <script type="text/javascript" src="http://tracking.publicidees.com/showbanner.php?partid=5211&progid=467&promoid=31797"></script>
    dans une base de donnée. Ensuite je le mets tel que dans un DIV en tant que chaine de caractère. Eventuellement, je peux manipuler la chaine, mais pas trop. En gros je peux metre des trucs devant ou dérrière, mais il est impératif que je ne touche pas à cette chaine sinon, je ne suis pas payer lorsque les gens clique sur la bannière.

    Comprends tu mon souci ?

  8. #8
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    Je vais me faire l'avocat du diable (pour une fois);

    Tester document.write en débutant javascript, c'est un peu comme si tu t'improvisais coiffeur ou maçon: tu as un outil mais comme tu ne sais pas vraiment à quoi il sert ni comment l'utiliser, tu vas massacrer quelqu'un ou quelque chose;

    En fait, cette méthode, certes primitive, est aussi puissante que alert(), eval(), etc.;

    La clé, c'est qu'elle doit être utilisée durant la phase d'interprétation du code de la page; si tu l'appelles après chargement - ne serait-ce que sur onload(), tout le dom sera remplacé par le texte défini dans write(); et là, ce que tu fais n'a plus aucun sens, bien sûr;

    Bref, ne mets jamais un document.write dans un fichier js, sauf si tu es sûr qu'il sera lu dans le continuum espace-temps page/chargement

  9. #9
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 643
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 643
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    ^^
    le document.write est le console.log de pauvres jt ?

  10. #10
    Membre expérimenté Avatar de Willpower
    Homme Profil pro
    sans emploi
    Inscrit en
    Décembre 2010
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 009
    Points : 1 519
    Points
    1 519
    Par défaut
    moi aussi j'ai envie de jouer l'avocat du diable, car le petit (24 ligne / 12ko) script (sans doute)le plus utilisé du web :
    Code js : Sélectionner tout - Visualiser dans une fenêtre à part
    n=s.document;...;n.write(c);
    Code js : Sélectionner tout - Visualiser dans une fenêtre à part
    eb=X.document;...;eb.write(Ra(Z,X.google_ad_width,X.google_ad_height));
    Code js : Sélectionner tout - Visualiser dans une fenêtre à part
    document.write(Za());

    utilise document.write !


    comme dit jt, il faut juste savoir l'utiliser à bon escient.

  11. #11
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    Merci les gars, c'est trés sympa vos explicatons.

    Donc, promis, je ne mettrais jamais de document.write dans MES scripts, pas de soucis.


    Maintenant, le détail à côté du quel vous passez (pourtant je croyais avoir été clair) c'est que c'est pas moi qui le mets ce document.write, c'est la régie publicitaire qui me fourni le script.
    Du coup, je suis obligé de faire avec.

    Alors est ce que je peux faire quelque chose pour contrecarrer l'effet du document.write ?
    Pourquoi FF, qui est standard le comprend et ne me masascre pas ma page alors que IE (sois disant si pourri) me pète tout avec cette commande visiblement non standard.

    Je peux pas me permetre de me passer de 56 % de mes visiteurs.

    Merci pour votre aide.

  12. #12
    Membre expérimenté Avatar de Willpower
    Homme Profil pro
    sans emploi
    Inscrit en
    Décembre 2010
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 009
    Points : 1 519
    Points
    1 519
    Par défaut
    J'ai réussi à déterminer que le problème venait d'un script qui envoi un document.write.
    En gros si je met ça :
    bizarrement quand on retire ce script de ta page, elle reste toute bousillée sous IE ... tu m'expliqueras donc comment t'as déterminé que le problème venait de là ?


    celui qui plante ta page, c'est celui-ci :


    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <!--[if lte IE 8]> <script type="text/javascript" src="/scripts/roundies.js"> </script><![endif]-->

  13. #13
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 643
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 643
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    essaye plutot csspie ... ?

  14. #14
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    Citation Envoyé par Willpower Voir le message
    bizarrement quand on retire ce script de ta page, elle reste toute bousillée sous IE ... tu m'expliqueras donc comment t'as déterminé que le problème venait de là ?


    celui qui plante ta page, c'est celui-ci :


    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <!--[if lte IE 8]> <script type="text/javascript" src="/scripts/roundies.js"> </script><![endif]-->
    J'ai déterminé ça car lorsque je l'enlève, tout va bien.
    Par contre, le script que tu indique est pris sur un site qui fait des design gratuit en CSS et il est utilisé pour faire les coins arrondi sur IE comme sur FF.

    Mais aprés test, en le viran, ma page est belle.
    Bon, je vais faire une batterie de test.

    Merci

Discussions similaires

  1. Probleme avec document.write()
    Par bins dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 11/11/2005, 18h27
  2. pb de " et ' dans document.write
    Par R@IZER dans le forum Général JavaScript
    Réponses: 14
    Dernier message: 09/11/2005, 13h58
  3. plusieurs document.write dans une meme page
    Par Loko dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 05/07/2005, 17h16
  4. document.write sur un target _blank
    Par petitsims dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 10/02/2005, 12h32
  5. Boutons Radios qui charge une page php différente
    Par nebule dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 18/11/2004, 15h25

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