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 :

Ecrire dans le document après Onload


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Avatar de elitemedia
    Profil pro
    Inscrit en
    Août 2006
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 115
    Par défaut Ecrire dans le document après Onload
    Salut,

    J'utilise comme base la librairie JQuery, mais la méthode est la même avec du JS classique sans la librairie et si quelqu'un peut m'expliquer comment faire meme sans la librairie je suis preneur.

    Je souhaite qu'un script qui vient d'une url externe soit executé uniquement
    si la page HTML est d'abord entièrement chargée, je passe donc par un onload
    pour écrire le script avec write. Voici donc ce que j'ai et qui ne
    fonctionner comme je voudrais puisque le script ne semble pas se charger
    après et seulement après que la page soit chargée totalement :

    J'ai donc selon la librairie fait ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <script type="text/javascript">
     <!--
     function load_Shop(col, rows)
     {
      window.document.write('<scr'+'ipt type="text/javascript" 
    src="http://urlshop.com/affiliates/remote_data.asp?lang=fr&amp;affid=19899&amp;col='+col+'&amp;row='+rows+'&amp;catid=&amp;cur=CHF&amp;shop=1&amp;tmp=1&amp;style=rnd" 
    charset="iso-8859-15"></scr'+'ipt>');
     }
     
     $(document).ready(function()
     {
      load_Shop(1, 2);
     });
     //-->
    </script>
    Ce qui me semble assez logique, mais bon ca ne fonctionne pas et ca me charge le script sans le HTML du site dans une fenetre vide. Par contre,
    si je fais ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <script type="text/javascript">
     <!--
     function load_Shop(col, rows)
     {
      window.document.write('<scr'+'ipt type="text/javascript" 
    src="http://urlshop.com/affiliates/remote_data.asp?lang=fr&amp;affid=19899&amp;col='+col+'&amp;row='+rows+'&amp;catid=&amp;cur=CHF&amp;shop=1&amp;tmp=1&amp;style=rnd" 
    charset="iso-8859-15"></scr'+'ipt>');
     }
     
     $(document).ready = load_Shop(1, 2);
     //-->
    </script>
    Ca s'affiche bien au bon endroit tout comme il faut, mais ca se charge en meme temps que la page, et le problème c'est que si le site distant est lent, ca me ralenti tout le chargement de mon site à moi, et c'est justement ce que je veux éviter.

    Avez-vous des solutions ?

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 252
    Par défaut
    Bon, je ne vois pas de problème avec le premier code. Je ne comprends donc pas trop. Selon la syntaxe que j'ai pu lire de jQuery, c'est tout à fait correct.

    Par contre, avec le second, le problème est présent parce que tu ne demandes pas d'appeler load_Shop plus tard, tu l'appelle directement, en attribuant sa valeur de retour (qui n'existe pas) à $(document).ready . Or comme tu appelles la fonction, elle est exécutée au moment où le <script></script> (de ton HTML) est lu, et non à la fin.

  3. #3
    Expert confirmé
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par défaut
    La position du script dans la page ne change pas grand chose
    sauf dans le cas ou celui-ci ecrit une valeur affichable (texte ou html)
    dans ce cas le script écrit à l'endroit ou il se trouve.

    un tag script avec un attribut src est directement placé par le DOM dans la liste des scripts. il est ajouté à la fin de cette liste.

    le script ainsi lié n'est pas exécuté (inclus) imédiatement. il ne l'est qu'après exécution (chargement) te tous les autres script présent avant lui dans la liste.

    en suposant que tu ais plusieurs scripts dans ta page s1 s2 s3
    et que ton exemple soit le s2 l'ordre d'exécution sera s1 s2 s3 puis le script de ton exemple.

    pour ma part je ne mets plus de script dans le document. si un script doit écrire à un endroit particulier je le fais en javascript avec un getElementById

    de façon général l'utilisation de DOM permet une meilleure maitrise.
    pour ajouter ton script à la liste il faut faire comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    var thescript = document.createElement('script');
    thescript.setAttribute('src', "http://urlshop.com/affiliates/remote_data.asp?lang=fr&amp;affid=19899&amp;col='+col+'&amp;row='+rows+'&amp;catid=&amp;cur=CHF&amp;shop=1&amp;tmp=1&amp;style=rnd");
    thescript.setAttribute('type', 'text/javascript');
    thescript.setAttribute('charset', 'iso-8859-15');
    thescript.setAttribute('id', '19899');
    var scripts = document.getElementsByTagName('SCRIPT');
    scripts[0].parentNode.appendChild(thescript);
    le tag script src et le onLoad ont un comportement qui est parfois surprenant mais qui lorsqu'on à compris cette notion de liste s'explique facilement.

    reprenons nos script s1 s2 s3
    il sont exécuté (chargés) dans l'orde de la liste une fois les trois chargés et toute la page Ok on passe dans le onLoad. là ton script exécute une fonction qui ajoute un tag script au DOM ce script n'est pas chargé. il ne le sera que lorsque l'évènement onLoad sera terminé.

    on a donc chargement de s1 s2 s3
    execution de onLoad qui ajoute s4
    fin du onLoad et chargement du s4

    A+JYT

  4. #4
    Membre confirmé
    Avatar de elitemedia
    Profil pro
    Inscrit en
    Août 2006
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 115
    Par défaut
    Merci pour ton explication. Malheureusement ca ne fonctionne pas et après 1 semaine de recherche je patauge complètement.

    Je vais donc te donner le code de ma page (simplifié) afin que je puisse être aidé. Je précise en revanche que le script reprends la données d'un site adulte de lingerie en esperant choquer personne ici et surtout que nous nous en tenions à une discussion technique.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    <html>
    <head>
    <script type="text/javascript">
    	<!--
    	$(document).ready(function()
    	{
    	var thescript = document.createElement('script');
    	thescript.setAttribute('src', "http://sexylingerie.ch/affiliates/remote_data.asp?lang=fr&amp;affid=19899&amp;col=1&amp;row=2&amp;catid=&amp;cur=CHF&amp;shop=1&amp;tmp=1&amp;style=rnd");
    	thescript.setAttribute('type', 'text/javascript');
    	thescript.setAttribute('charset', 'iso-8859-15');
    	document.getElementById('shop').appendChild(thescript);
    	});
    	//-->
    </script>
    </head>
     
    <body>
    <div id="shop">
    <!-- Ici doit s'écrire le code JS dynamiquement -->
    </div>
    </body>
    </html>
    Note que le $(document).ready(function().... découle de la libraire JQuery et remplace un Onload. Dans le doute j'avais testé avec un Onload mais ca ne fonctionne pas.

    Le script qui m'est fourni par ce site d'affiliation et accessoirement que je souhaite générer dynamiquement est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <script type="text/javascript" src="http://sexylingerie.ch/affiliates/remote_data.asp?lang=fr&amp;affid=19899&amp;col=1&amp;row=2&amp;catid=&amp;cur=CHF&amp;shop=1&amp;tmp=1&amp;style=rnd" charset="iso-8859-15"></script>
    Merci pour toute aide, Christophe

  5. #5
    Membre Expert
    Inscrit en
    Septembre 2002
    Messages
    2 307
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 307
    Par défaut
    mets ton code à la fin de la page!!!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <script type="text/javascript">
     <!--
     function load_Shop(col, rows)
     {
      window.document.write('<scr'+'ipt type="text/javascript" 
    src="http://urlshop.com/affiliates/remote_data.asp?lang=fr&amp;affid=19899&amp;col='+col+'&amp;row='+rows+'&amp;catid=&amp;cur=CHF&amp;shop=1&amp;tmp=1&amp;style=rnd" 
    charset="iso-8859-15"></scr'+'ipt>');
     }
     
     $(document).ready = load_Shop(1, 2);
     //-->
    </script>
    </body>
    </html>

Discussions similaires

  1. [WD15] Ecrire dans un document Excel
    Par bestmoroco dans le forum WinDev
    Réponses: 6
    Dernier message: 06/11/2012, 14h18
  2. Ecrire dans un document Word avec une macro Word
    Par deruyter dans le forum VBA Word
    Réponses: 2
    Dernier message: 14/01/2010, 00h24
  3. Souligner les mots dans les documents après une recherche
    Par Watier_53 dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 27/06/2008, 10h50
  4. Ecrire dans un document Excel
    Par SandraG dans le forum Powerbuilder
    Réponses: 3
    Dernier message: 06/05/2008, 18h39
  5. Ecrire dans un document Word
    Par belocom dans le forum VB.NET
    Réponses: 3
    Dernier message: 09/04/2007, 00h49

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