JavaScript:Webページが読み込みが終了するまで、複数の関数オンロードイベントから情報を収集する

StackOverflow https://stackoverflow.com/questions/1239474

  •  11-09-2019
  •  | 
  •  

質問

さて、今、私はJavaScriptでやる必要があるこのことを持っていますが、それを行う最良の方法がわかりません!私はそれがうまくいくべきだと思う方法をあなたに伝えることによって説明します...

  1. Webページ内には、次のような複数のスパンタグがあります。 <span onload="myfunction(1);"></span>

  2. MyFunction()(HOSTEDEDEDEDEDED)は、ページが終了して各オンロードイベントからすべての情報を収集するまで待ちます。

  3. 次に、myFunction()がこの情報を外部PHPページに送信して処理します。

  4. PHPページはHTMLを返します。 (おそらくアレイで1回の通話でこれをしたいので)

  5. MyFunction()は、スパンタグをHTMLに置き換えます。

ステップ3、4、および5私は方法を知っていますが、ステップ1と2は達成する方法がわかりませんか?誰かが私が遭遇するかもしれない別の大きな問題を見た場合に備えて、私はここにすべての手順をリストしました。

役に立ちましたか?

解決

次のコードと同様のコードを使用してみることができます

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

他のヒント

オンロードイベントは<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
    }
})();

スパンタグには「オンロード」がありません

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top