Javascript: собирать информацию о событиях загрузки нескольких функций, пока не завершится загрузка веб-страницы - PullRequest
0 голосов
/ 06 августа 2009

Хорошо, теперь у меня есть то, что мне нужно сделать с Javascript, но я понятия не имею, лучший способ сделать это! Я объясню, рассказав вам, как я «думаю», что это должно работать ...

  1. Внутри веб-страницы будет многократный тэг, подобный этому: <span onload="myfunction(1);"></span>

  2. myfunction () (размещенный снаружи) будет ожидать окончания загрузки страницы и собирать всю информацию о каждом из событий загрузки.

  3. Тогда myfunction () отправит эту информацию на внешнюю php-страницу для обработки.

  4. Страница php вернет немного html. (Вероятно, в массиве, потому что я хочу сделать это в 1 вызове)

  5. myfunction () заменит теги span на html.

Шаги 3, 4 и 5 Я знаю, как это сделать, но шаги 1 и 2, я не знаю, как достичь? Я перечислил все мои шаги здесь на случай, если кто-то увидит еще одну большую проблему, с которой я могу столкнуться.

Ответы [ 3 ]

1 голос
/ 06 августа 2009

Поскольку событие onload поддерживается только , , ,

<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
    }
})();
0 голосов
/ 06 августа 2009

Вы можете попробовать использовать код, подобный следующему

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 голосов
/ 06 августа 2009

Тег span не имеет «onload»

...