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

发布于 2024-07-29 20:44:58 字数 504 浏览 10 评论 0原文

好吧,现在我已经得到了我需要用 Javascript 做的事情,但我不知道最好的方法! 我将通过告诉您我“认为”它应该如何工作来解释...

  1. 在网页内将有多个span标签,如下所示:;

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

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

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

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

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

Okay, now I've got this thing I need to do with Javascript but I have no idea the best way of doing it! I'll explain by telling you how I "think" it should work...

  1. Inside the web page there will be multiple span tag like this: <span onload="myfunction(1);"></span>

  2. myfunction() (hosted externally) will wait until the page finishes loading and collect all the information from each of the onload events.

  3. Then myfunction() will send this information to a external php page for processing.

  4. The php page will return some html. (Probably in an array because I want to do this in 1 call)

  5. myfunction() will then replace the span tags with the html.

Steps 3, 4, and 5 I know how to do but steps 1 and 2 I'm not sure how to achieve? I've listed all my steps here just in case someone sees another big problem I might run into.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

蛮可爱 2024-08-05 20:44:58

由于 onload 事件仅受 < 支持 身体>,< 框架>,< 框架集>, < iframe>, <; 图像>,
什么都不会发生。
我建议你为每个跨度放置 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
    }
})();

Since onload event is supported only by < body>, < frame>, < frameset>, < iframe>, < img>,
nothing will happen.
I would reccomend you put id's for every span and put also something like this:

<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
    }
})();
那请放手 2024-08-05 20:44:58

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

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

You can try to use a code similar to the next

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);
不必了 2024-08-05 20:44:58

span标签没有“onload”

The span tag does not have the "onload"

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文