関数自体ではなく、関数の結果に window.onload を割り当てているため、次のコードが機能しないことがわかりました。しかし、括弧を削除すると、オンロードの前に構成を処理するために別の関数を明示的に呼び出す必要があると思われます。だから、私が今持っているところ:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<HEAD>
<script type="text/javascript" src="lb-core.js"></script>
<script type="application/javascript">
var lbp = {
defaults: {
color: "blue"
},
init: function(config) {
if(config) {
for(prop in config){
setBgcolor.defaults[prop] = config[prop];
}
}
var bod = document.body;
bod.style.backgroundColor = setBgcolor.defaults.color;
}
}
var config = {
color: "green"
}
window.onload = lbp.init(config);
</script>
</HEAD>
<body>
<div id="container">test</div>
</body>
</HTML>
次のように変更する必要があると思います。
var lbp = {
defaults: {
color: "blue"
},
configs: function(config){
for(prop in config){
setBgcolor.defaults[prop] = config[prop];
}
},
init: function() {
var bod = document.body;
bod.style.backgroundColor = setBgcolor.defaults.color;
}
}
var config = {
color: "green"
}
lbp.configs(config);
window.onload = lbp.init;
次に、人々がこのスクリプトを使用して構成を渡すには、これらの両方の最終行 (configs と init) を別々に呼び出す必要があります。これを行うより良い方法はありますか?
注: window.onload の機能をバンドルするという回答の場合は、スクリプト内で window.onload を割り当てることが危険ではないことも確認してください。実際、自分のスクリプトの後に来る別のスクリプトが、オンロードに割り当てたものを上書きする可能性があることを理解しています。それを考慮して、スクリプトのユーザーが初期化時に自分で関数を呼び出すことを期待するのが最善です。