var old = window.onload;
window.onload = (typeof old != 'function') ?
xxxx.init : function(e) { old(e); return xxxx.init(e); };
(xxxxは関数名(?))
上記スクリプトは何を意味していますか?どのような機能をもっているのですか?詳しい方教えてください。よろしくお願いいたします。
まず、window.onload とは以下のような関数です。
http://www.openspc2.org/JavaScript/ref/window/onload.htm
そして該当のスクリプトは、windows.onload が現在設定されているかを調べ、設定されていなければそのまま xxxx.init という関数を設定。設定されていれば、「それを実行してから xxxx.init を実行する」という新たな関数に置き換えています。
まず、window.onload とは以下のような関数です。
http://www.openspc2.org/JavaScript/ref/window/onload.htm
そして該当のスクリプトは、windows.onload が現在設定されているかを調べ、設定されていなければそのまま xxxx.init という関数を設定。設定されていれば、「それを実行してから xxxx.init を実行する」という新たな関数に置き換えています。
ありがとうございます。
>windows.onload が現在設定されているかを調べ、設定されていなければ・・・
すなわち、複数のWindow.onloadを可能にするものと考えてよろしいのでしょうか?
また、これ自体
window.onload = (typeof old != 'function') ?
とwindow.onloadを使用しているので、これよりあとにWindow.onloadが出てくると、無効になると考えてよろしいのでしょうか。
(つまり、このスクリプトは最後に置かなければ意味がない?)
私は詳しく無いのですが、
ファンクションがロードされているか調べて、ファンクションの処理方法を切り替えているように見えます。
文法は、このパターンですよね。
比較演算子
式1 ? 式2 : 式3
式1が真なら式2が評価され、偽なら式3が評価されます。
print $boolean ? "true" : "false" ;
$booleanが真なら「true」、偽なら「false」と表示されます。
ありがとうございます。
おかげさまでJSのしくみをひとつ覚えました。
!とか?でいつもパニくってたので・・・^^;
複数のWindow.onloadを可能にするものと考えてよろしいのでしょうか?
実質的にそういう目的で使われるものと思います。
これよりあとにWindow.onloadが出てくると、無効になると考えてよろしいのでしょうか。
同じやり方をすればさらにいくつもの処理を実行する事が可能ですが、後続のスクリプトが考慮してくれない場合
window.onload = myFunction;
等、上書きされてしまう可能性はあります。
出来れば後ろに置く方が確実です。
完璧です!!
ありがとうございます。
>windows.onload が現在設定されているかを調べ、設定されていなければ・・・
すなわち、複数のWindow.onloadを可能にするものと考えてよろしいのでしょうか?
また、これ自体
window.onload = (typeof old != 'function') ?
とwindow.onloadを使用しているので、これよりあとにWindow.onloadが出てくると、無効になると考えてよろしいのでしょうか。
(つまり、このスクリプトは最後に置かなければ意味がない?)