[英]Javascript: collect info from multiple function onload events until web page finishes loading
好的,现在我需要使用Javascript处理此事,但我不知道这样做的最佳方法! 我将通过告诉您如何“思考”它应该起作用的方式进行说明...
在网页内将有多个跨度标签,如下所示: <span onload="myfunction(1);"></span>
myfunction()(在外部托管)将等到页面完成加载并从每个onload事件中收集所有信息。
然后myfunction()会将这些信息发送到外部php页面进行处理。
php页面将返回一些html。 (可能在数组中,因为我想在一次调用中执行此操作)
然后,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.