繁体   English   中英

Javascript:从多个功能加载事件中收集信息,直到网页加载完成

[英]Javascript: collect info from multiple function onload events until web page finishes loading

好的,现在我需要使用Javascript处理此事,但我不知道这样做的最佳方法! 我将通过告诉您如何“思考”它应该起作用的方式进行说明...

  1. 在网页内将有多个跨度标签,如下所示: <span onload="myfunction(1);"></span>

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

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

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

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

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

由于onload事件仅受<body>,<frame>,<frameset>,<iframe>,<img>支持,因此不会发生任何事情。 我建议您为每个跨度输入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
    }
})();

span标签没有“ onload”

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM