2016-04-18 15 views
4

私の質問は似ていますが、ここで求めたものとは少し違う、その質問にはwindow.onload vs <body onload=""/>JavaScriptのwindow.onload対body.onload

が、それはwindow.onloadとインラインJSを使用しての比較でした。

私の質問は以下の違いです。 bodyタグのidが "bodyTag"であるとします。正確

window.onload = function() { 
    alert("hi"); 
} 

document.getElementById("bodyTag").onload = function() { 
    alert("hi"); 
} 

、それらの2とするとき、私は他の対1を使用する必要があるとの違いは何ですか?これは、純粋なJavaScriptの場合のみです。 Webページ全体がロードされ、すべてのスタイルがロードされ、すべてのJavascriptコードがロードされるまで、window.onloadが開始されないことを前提としていますか?最初のバージョン(document.getElementById( "bodyTag").onload =)では、Webページ全体が読み込まれるのを待ちます(CSSスタイルがCSSで外部CSSファイルとして宣言されている場合はCSSスタイル)が、すべてのJavaScriptロードするには?それは違いですか?

+1

動作はブラウザによって異なる場合があります。 body.onloadは、DOMの準備ができたら起動しますが、必ずしも他のものがロードされた後ではありません。良い答えについてはこちらを参照してください:http://stackoverflow.com/questions/588040/window-onload-vs-document-onload –

+0

ありがとう! Document.onloadの存在についても知らなかった。だから、window.onloadはほとんど私が欲しいものですよね? "DOMが準備ができている"ときは、それはまだ私には少し不明です。実際のWebページが読み込まれたときにスクリプトが読み込まれたときのことを意味します。そして、全体として、ベストプラクティスを確認するには、純粋なJavaScriptを扱うときにwindow.onloadを使用することです。 – Joe

+0

この他のスレッドで受け入れられた答えがdocument.onloadで完全に正しいのかどうかはわかりません。 onloadメソッドは、ノードの下にあるすべての**リソースがロードされた場合にのみトリガーするロードイベントをリッスンします。対照的に、基本DOMが存在する場合は、DomContentLoadedイベントが既にトリガーされています。 https://developer.mozilla.org/en-US/docs/Web/Events/DOMContentLoaded(これらの2つを区別する小さな段落があります) –

答えて

2

ウィンドウ(オブジェクト)は、他のすべてのオブジェクト(デフォルトとカスタムオブジェクト)を含んでいる場合もありますが、indexedDB、セッションストレージ、Cookie、変数、関数、ブラウザページ内のすべて完全に。 基本的に、私は上記のウィンドウを書いているので、オブジェクトです、それはメソッドまたはプロパティとしてすべてを格納します。この例では、することができます(、firstNamemiddleNamelastNameがプロパティとしてrefferedされ、そしてfullName()がmethedと呼ばれ、私はコンストラクタ関数を使用してオブジェクトを作成し、私はプロパティが何であるかを説明しましょうとする方法は何ですか、この例では

(function my_obj(){ 
this.firstName="john"; 
var middleName = "XYZ" 
this.lastName="doe"; 
this.fullName = function(){ 
return this.firstName+" "+this.middleName+" "+this.lastName 
} 
document.write(this.fullName()) 
})(); 

そのメソッドはオブジェクト内の関数の別の名前です)。 ので、この

window{ 
preset_obj:{}; 
indexedDB:{......}; 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
//your code loads in the end 
var my_var= "JS rocks!" 
var anti_me= "Are You out of your Mind?? JS??Huh!" 
var dont_care= "I Love COBOL" 

} 

のようなウィンドウを考えるが、身体、私の友人は(文書と体が2つの異なるオブジェクトで言及していない)、別のケースです。身体にIDを与えてdocument.getElementByID('ID')を使用した場合。ページに表示されるすべてのVisible要素を含むオブジェクトが返されます。クッキー、セッションストレージなどの他のすべてのウィンドウの内容は含まれません。文書の場合も同じです。ドキュメントでは、何も書いていないHTMLコード全体が選択されます。言い換えれば、それは<html></html>タグで囲まれたすべてを含むオブジェクトです。混乱が解消されることを願っています。

----------------------- UPDATE ------------------ --------------------------------- 申し訳ありませんあなたのポストを正しく読んでください。 window.onloadは、ヘッダーとともにページ全体が処理されたときに読み込まれます(headタグまたはHTML5 headerタグと混同しないでください)。 document.onloadは、フロントエンドの作業(HTML、CSS、JSの読み込みが完了した時)だけロードされます。ヘッダーに100KB +コードを送信しない限り、時間差はあまりありません。ヘッダーが大きいか、ページの表示に固有の何かの時間を実行する

-1

Webページのウィンドウがロードされるときにウィンドウのロードがロードされます。ここでは、Webページのボディがロードされるときにのみボディのロードがロードされます。

簡単にするには、 最初のウィンドウが読み込まれ、Webページの本文が読み込まれます。窓。最初にロードがロードされ、次にボディー・ロードが機能します。

関連する問題