$(window).load()が正常動作しないのはSafariの不具合?
今まで全く気付かなかったけど、Mac/iOSのSafariでjQueryの「$(window).load()」で正常動作しないケースがあることを確認しました。
ネット検索して同様のケースを探してみましたが、見当たらないのでもしかしたら自分の環境固有の問題かもしれません。
症状としては、1回目のアクセスでは問題ないけど、リンク経由でアクセスすると2回目以降処理が走らない場合があるといったもの。
具体的には、例えばデフォルトでローダーを表示させておいて、スクリプトが読み込まれ実行された時にそのローダーを非表示にしてコンテンツを表示させるようなプログラムの場合、ローダーがずっと表示されたままの状態になってしまいます。
リンク経由というのがポイントで、ブラウザの更新ボタンで再読み込みする場合は正常動作します。
他のブラウザやAndroidでは問題なく、非常に謎な症状でしたが、色々実験してみて突き詰めた結果「$(window).load()」が原因のようでした。
あれこれしている中で「$(window).load()」を外してみた時、正常に動作しこれが原因だと分かりましたが、正常だったとは言っても気持ち悪いので「$(document).ready()」の方にしておきました。
アニメーションに関わるものなので、理想は「$(window).load()」で全てが読み込まれから実行が望ましいと思いますが、そこは一旦妥協で。
因みに「$(document).ready()」はDOMが構築次第実行されます。
コアjQuery+プラグイン/jQuery UI 開発実践技法 (Programmer's SELECTION)
- 作者: Bear Bibeault,Yehuda Katz,吉川邦夫
- 出版社/メーカー: 翔泳社
- 発売日: 2011/08/31
- メディア: 大型本
- 購入: 8人 クリック: 296回
- この商品を含むブログ (25件) を見る