既に運用中のCMSサイトで特定の1ページのみjQueryの処理を追加したいということがあったのですが、jQuery本体はbodyの末尾で読み込まれているのに対して、scriptを追加できるのがそのページのコンテンツ内(記事本文内)のみということがあったので、そういった場合にjQueryを使用する方法をメモ。
サンプルコード
まずは特に対応しないで追加してみます。
<div class="contents">
<p>この.contents内にしか追加できない</p>
<script>
$(function() {
console.log('.contents内');
});
</script>
</div>
<script src="https://code.jquery.com/jquery-3.7.1.min.js" integrity="sha256-/JqT3SQfawRcv/BIHPThkBvs0OEvtFFmqPF/lYI/Cxo=" crossorigin="anonymous"></script>
<script>
$(function() {
console.log('body末尾');
});
</script>
jQuery読み込み後に記述している13行目のconsoleは表示されますが、読み込み前に記述している.content内はエラーになります。
エラーになる場合のデモページ
次に対応方法ですが、loadイベントでjQueryを含む各リソースを読み込み終わった後に実行されるようにすることで、問題なく実行できるようです。
<div class="contents">
<p>この.contents内にしか追加できない</p>
<script>
window.addEventListener('load', function() {
console.log($);
});
</script>
</div>
<script src="https://code.jquery.com/jquery-3.7.1.min.js" integrity="sha256-/JqT3SQfawRcv/BIHPThkBvs0OEvtFFmqPF/lYI/Cxo=" crossorigin="anonymous"></script>
コメントが承認されるまで時間がかかります。