jQueryばかりに頼っていると忘れがちなので覚書です。
$(function(){ ... })
上記のように、jQueryを使えば、$()
を使いスクリプトの実行イベントを挿入できますが、
これをjQueryを使わずに記述する場合、
document
のDOMContentLoaded
にイベントを挿入し、 次のようにします。
document.addEventListener('DOMContentLoaded', function { ... });
もしくは、DOMConentLoaded
に対応していないブラウザは
window
のload
イベントに挿入し、 次のようにします。
window.addEventListener('load', function() { ... })
ちなみに、jQuery 2.1.4 の実際のコードはこのようになっています。
まずDOMContentLoaded
のイベントで処理しようとし、
それで処理できなかった場合はload
のイベントへフォールバックして処理しているようです。
DOMContentLoaded
イベントはドキュメントのロードと(DOMオブジェクトへの)パースが完了したときにfireされるイベントですが、従来からあるload
イベントはページ全体(スタイルシートや画像なども含めて)のロードが完了したときにfireされるイベントで、2つは同義ではありません。
一般的にはDOMContentLoaded
のほうがより最適なタイミングでスクリプトの実行が可能です。
DOMContentLoaded
についてはMDNで以下のように記載されています。
The DOMContentLoaded event is fired when the initial HTML document has been completely loaded and parsed, without waiting for stylesheets, images, and subframes to finish loading. A very different event - load - should be used only to detect a fully-loaded page. It is an incredibly popular mistake to use load where DOMContentLoaded would be much more appropriate, so be cautious.
https://developer.mozilla.org/en-US/docs/Web/Events/DOMContentLoaded