2009-08-06 5 views
0

Bon, maintenant j'ai quelque chose à faire avec Javascript mais je n'ai aucune idée de la meilleure façon de le faire! Je vais vous expliquer en vous disant que je « pense » il devrait fonctionner ...Javascript: collecter des informations à partir de plusieurs événements onload jusqu'à ce que la page web finisse de charger

  1. intérieur de la page Web, il y aura plusieurs étiquette span comme ceci: <span onload="myfunction(1);"></span>

  2. myfunction() (hébergé en externe) attendra que la page ait fini de charger et collecter toutes les informations de chacun des événements onload. Puis myfunction() enverra cette information à une page externe de php pour le traitement.

  3. La page php renverra du code html. (Probablement dans un tableau parce que je veux faire cela en 1 appel)

  4. myfunction() remplacera alors les balises span par le html.

Étapes 3, 4 et 5 Je sais comment faire, mais étapes 1 et 2 Je ne suis pas sûr de savoir comment atteindre? J'ai énuméré toutes mes étapes ici juste au cas où quelqu'un voit un autre gros problème que je pourrais rencontrer.

Répondre

0

Vous pouvez essayer d'utiliser un code similaire à la prochaine

function collector(){ 
    var spans = document.getElementsByTagName("SPAN"); 
    var commands = []; 
    for (var i=0; i<spans.length; i++) 
    if (spans[i].getAttribute("onload")) 
     commands.push(spans[i].getAttribute("onload")); 

    //here you have all onload commands in the array and can go to stage 3 
} 
if (window.addEventListener) 
    window.addEventListener("load",collector,false): 
else 
    window.attachEVent("onload",collector); 
+0

pouvez-vous utiliser quoi que ce soit pour la valeur getAttribute? – EddyR

+0

merci. Je ne peux pas croire que c'était si facile! Je pensais que ça allait être très compliqué et peut-être avec AJAX. J'apprends quelques nouvelles choses avec celui-là :) – EddyR

0

La balise span ne pas le "onload"

1

Depuis l'événement onload est pris en charge uniquement par < body>, cadre <> Iframe>, < iframe Je vous recommande de mettre id pour chaque portée et mettez aussi quelque chose comme ceci:

<body onload="collector.run()"> 
<span id="s1"></span> 
<script> collector.delayFunction("s1",/data/) </script> 
<span id="s2"></span> 
<script> collector.delayFunction("s2",/data/) </script> 
<span id="s3"></span> 
<script> collector.delayFunction("s3",/data/) </script> 
<span id="s4"></span> 
<script> collector.delayFunction("s4",/data/) </script> 
</body> 

//function in js file somewhere above 
var collector=(function(){ 
    this.stack={}; 

    this.delayFunction= function(id,data){ 
     this.collector.stack[id]=data; 
    } 

    this.run=function(){// this function will process all collected data 
    } 
})(); 
Questions connexes