2012-02-14 8 views
0

JavaScriptでいくつかの関数を保持するためにネームスペースを使用していますが、これはすべてwindow.onloadで実行します。私はこれを行う場合は、すべてが期待どおりに動作:JavaScriptオンロードをネームスペースと組み合わせる

SiteFn = {}; 

(function(context) { 
    context.firstFn = function() { 
     // do stuff 
    }; 
    context.secondFn = function() { 
     // do stuff 
    }; 
})(SiteFn); 

window.onload = function() { 
    SiteFn.firstFn(); 
    SiteFn.secondFn(); 
}; 

をしかし、私は単一init機能にグループ化しようとすると、window.onload前に呼び出されるようだ:

SiteFn = {}; 

(function(context) { 
    context.firstFn = function() { 
     // do stuff 
    }; 
    context.secondFn = function() { 
     // do stuff 
    }; 
    context.start = function() { 
     context.firstFn(); 
     context.secondFn(); 
    }; 
})(SiteFn); 

window.onload = SiteFn.start(); 

何午前私は間違っている?

+0

'SiteFn.start()' **機能**呼び出すとに戻り値を代入していません'window.onload'。関数参照の後の '()'は常に関数を呼び出します。 –

+0

[[onmouseover 'イベントハンドラを割り当てる](http://stackoverflow.com/questions/1534516/assign-the-onmouseover-event-handler) –

答えて

0

あなたは、実際にメソッドを呼び出す必要がちょうどそれへの参照を与える、など

change this: 
window.onload = SiteFn.start(); 
to this: 
window.onload = SiteFn.start; 
+0

ありがとう!私は早くそれを見つけたはずです! –

関連する問題