【Javascript】

var old = window.onload;
window.onload = (typeof old != 'function') ?
xxxx.init : function(e) { old(e); return xxxx.init(e); };


(xxxxは関数名(?))


上記スクリプトは何を意味していますか?どのような機能をもっているのですか?詳しい方教えてください。よろしくお願いいたします。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:2006/11/13 19:27:37
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:b-wind No.1

回答回数3344ベストアンサー獲得回数440

ポイント100pt

まず、window.onload とは以下のような関数です。

http://www.openspc2.org/JavaScript/ref/window/onload.htm

そして該当のスクリプトは、windows.onload が現在設定されているかを調べ、設定されていなければそのまま xxxx.init という関数を設定。設定されていれば、「それを実行してから xxxx.init を実行する」という新たな関数に置き換えています。

id:gillsderais

ありがとうございます。


>windows.onload が現在設定されているかを調べ、設定されていなければ・・・

すなわち、複数のWindow.onloadを可能にするものと考えてよろしいのでしょうか?

また、これ自体

window.onload = (typeof old != 'function') ?

とwindow.onloadを使用しているので、これよりあとにWindow.onloadが出てくると、無効になると考えてよろしいのでしょうか。

(つまり、このスクリプトは最後に置かなければ意味がない?)

2006/11/13 19:16:08

その他の回答2件)

id:b-wind No.1

回答回数3344ベストアンサー獲得回数440ここでベストアンサー

ポイント100pt

まず、window.onload とは以下のような関数です。

http://www.openspc2.org/JavaScript/ref/window/onload.htm

そして該当のスクリプトは、windows.onload が現在設定されているかを調べ、設定されていなければそのまま xxxx.init という関数を設定。設定されていれば、「それを実行してから xxxx.init を実行する」という新たな関数に置き換えています。

id:gillsderais

ありがとうございます。


>windows.onload が現在設定されているかを調べ、設定されていなければ・・・

すなわち、複数のWindow.onloadを可能にするものと考えてよろしいのでしょうか?

また、これ自体

window.onload = (typeof old != 'function') ?

とwindow.onloadを使用しているので、これよりあとにWindow.onloadが出てくると、無効になると考えてよろしいのでしょうか。

(つまり、このスクリプトは最後に置かなければ意味がない?)

2006/11/13 19:16:08
id:salic No.2

回答回数175ベストアンサー獲得回数1

ポイント41pt

私は詳しく無いのですが、

ファンクションがロードされているか調べて、ファンクションの処理方法を切り替えているように見えます。


文法は、このパターンですよね。

比較演算子

式1 ? 式2 : 式3

式1が真なら式2が評価され、偽なら式3が評価されます。

print $boolean ? "true" : "false" ;

$booleanが真なら「true」、偽なら「false」と表示されます。

http://php.dori-mu.net/syntax.html

id:gillsderais

ありがとうございます。

おかげさまでJSのしくみをひとつ覚えました。

!とか?でいつもパニくってたので・・・^^;

2006/11/13 19:18:22
id:b-wind No.3

回答回数3344ベストアンサー獲得回数440

ポイント50pt
複数のWindow.onloadを可能にするものと考えてよろしいのでしょうか?

実質的にそういう目的で使われるものと思います。


これよりあとにWindow.onloadが出てくると、無効になると考えてよろしいのでしょうか。

同じやり方をすればさらにいくつもの処理を実行する事が可能ですが、後続のスクリプトが考慮してくれない場合

window.onload = myFunction;

等、上書きされてしまう可能性はあります。

出来れば後ろに置く方が確実です。

http://q.hatena.ne.jp/1163406607

id:gillsderais

完璧です!!

2006/11/13 19:25:41

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません