LoginSignup
2
1

More than 3 years have passed since last update.

jQueryのready関数とload関数の実行順に気をつける

Last updated at Posted at 2019-12-03

あるHPでjQueryを使ってアニメーションを動かしていた。正確に言うと、アニメーションのトリガーとして、特定のタグに属性を追加するというような処理をしていた。

が、どうもChromeやSafariではちゃんと動くのに、Firefoxでは動いたり動かなかったりするという症状が出ていた。

調べてみるとjQueryの書き方とバージョンの問題のようだった。

症状が出ていた処理は、以下のように$(function(){})(ready関数)の中に、$(window).on()(load関数)が書かれていた。

$(function(){
  // DOMツリー構築完了後の処理
  $(window).on('load', function(){
    // 画像・動画などの関連データが読み込まれた後の処理
  });
});

確かに処理の順番を理解していれば、この書き方がおかしいことに気づく。

readyは画像などが表示されるより前に実行され、loadは画像などが表示された後に実行されます。

jQuery2.0だと、上の書き方でも正常に動いてくれたが、jQuery3.0以降は、$(window).on()の処理は$(function(){})の外に書かなければいけないとのこと。

$(function(){
  // DOMツリー構築完了後の処理
});

$(window).on('load', function(){
  // 画像・動画などの関連データが読み込まれた後の処理
});

参考

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1