Just listen für alle drei Veranstaltungen und die erste ausgelöst gewinnt. Wenn der Gewinner DOMContentLoaded ist, wird es unterstützt. Wenn es zu dem Zeitpunkt nicht ausgelöst wurde, an dem eines der beiden anderen ausgelöst wurde, wird es nicht unterstützt.
<script>
var hasDOMContentLoaded = false,
ready = false,
readyMethod = null;
// Listen for "DOMContentLoaded"
document.addEventListener("DOMContentLoaded", function(event) {
hasDOMContentLoaded = true;
init("DOMContentLoaded");
});
// Listen for "onreadystatechange"
document.onreadystatechange = function() { init("onreadystatechange"); }
// Listen for "load"
document.addEventListener("load", function(event) { init("load"); });
// Gets called after any one of the above is triggered.
function init(method) {
if(!ready) {
ready = true;
readyMethod = method;
go();
}
}
// Page is ready, time is up.
// Eitehr DOMContentLoaded has been triggered or it never will.
function go() {
console.log("hasDOMContentLoaded: ", hasDOMContentLoaded);
// My initialization code here
}
</script>
Ein Tauchgang in etwas wie die jQuery-Quelle sollte informativ sein. – Pointy
Warum keine Kompatibilitätstabelle verwenden? – Mics
@Mics Ursache das ist Browser-Erkennung nicht Feature-Erkennung. –