インラインスクリプトには、defer
属性は使えません。
例えば以下のようには書けません。
<script src="a.js" defer></script> <script src="b.js" defer></script> <script defer > //c処理 </script>
MDNに書いてました↓。
defer
属性は、src
属性がない場合 (すなわちインラインスクリプト) に使用してはいけません。そのような場合は効果がありません。引用:https://developer.mozilla.org/ja/docs/Web/HTML/Element/Script#attributes
このような場合に、a → b → c
と処理したい場合は、以下のように書きます。
<script src="a.js" defer></script> <script src="b.js" defer></script> <script> window.addEventListener( 'DOMContentLoaded', function(){ //c処理 }) </script>
(defer属性を付けたときの実行タイミングは、DOMContentLoaded
の直前です。なのでこの場合、a → b → c
という順番になります)
もしくは、load
イベントを使って書きます。
<script src="a.js" defer></script> <script src="b.js" defer></script> <script> window.addEventListener( 'load', function(){ //c処理 }) </script>
おわり
コメント