Javascript:从多个函数onload事件收集信息,直到网页完成加载

时间:2009-08-06 14:58:58

标签: javascript onload-event

好的,现在我已经有了这个我需要用Javascript做的事情,但我不知道最好的方法!我将通过告诉你如何“思考”它应该有效来解释......

  1. 在网页内部会有多个span标记,如下所示:<span onload="myfunction(1);"></span>

  2. myfunction()(外部托管)将等到页面完成加载并收集每个onload事件的所有信息。

  3. 然后myfunction()会将此信息发送到外部php页面进行处理。

  4. php页面会返回一些html。 (可能在数组中,因为我想在1次调用中执行此操作)

  5. myfunction()将用html替换span标签。

  6. 步骤3,4和5我知道怎么做,但步骤1和2我不知道如何实现?我列出了我在这里的所有步骤,以防有人看到我可能遇到的另一个大问题。

3 个答案:

答案 0 :(得分:1)

由于onload事件仅受&lt; body&gt;,&lt; frame&gt;,&lt; frameset&gt;,&lt; iframe&gt;,&lt; IMG&gt;中  什么都不会发生。 我建议你为每个跨度放置id,并且也放这样的东西:

<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
    }
})();

答案 1 :(得分:0)

span标记没有“onload”

答案 2 :(得分:0)

您可以尝试使用类似于下一个

的代码
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);