MacのChromeで確認。
index.html
<div id="a"></div>
というHTMLがあり、URLがindex.html#aの時、
document.querySelector(':target');
でdiv要素が取得できるはずですが、DOMContentLoadedイベントの中ではまだ取得できない。
window.addEventListener('DOMContentLoaded', function() {
document.querySelector(':target'); // 常に null !
document.querySelector('#a'); // こっちはちゃんと取得できる
});
window.addEventListener('load', function() {
document.querySelector(':target'); // ちゃんととれる
});