Alors que j'ai l'habitude de plaider en évitant d'utiliser les cadres de moins que nécessaire, je dirais à l'aide de l'un est dans ce cas parfaitement bien. Voici jQuery:
$(function () {
// do stuff after DOM has loaded
});
Notez que ce n'est PAS la même chose qu'un window.onload
événement, depuis onload
s'exécute en premier, après d'autres ressources ont été chargés (images, etc.) Le code que j'ai utilisé dans mon exemple va exécuter lorsque le DOM a fini de charger, c'est à dire, quand la totalité de la structure du document HTML est disponible (pas nécessairement lorsque les images, CSS, etc. est disponible.)
Si vous souhaitez un tel menu variable, vous pouvez définir l'un dans le prêt-fonction:
var documentIsReady = false;
$(function () { documentIsReady = true; });
Bien sûr, vous pouvez trouver encore plus de lumière-poids bibliothèques de jQuery si tout ce que vous voulez faire est de vérifier pour les DOM-prêt. Mais l'utilisation d'une bibliothèque dans le cas où les différents navigateurs se comportent très différemment (c'est un de ces cas.)
À l'aide du code de la DOMAssistant de la bibliothèque, de faire votre propre "le DOM est prêt", la fonction ne devrait pas être trop dur:
var domLoaded = function (callback) {
/* Internet Explorer */
/*@cc_on
@if (@_win32 || @_win64)
document.write('<script id="ieScriptLoad" defer src="//:"><\/script>');
document.getElementById('ieScriptLoad').onreadystatechange = function() {
if (this.readyState == 'complete') {
callback();
}
};
@end @*/
/* Mozilla, Chrome, Opera */
if (document.addEventListener) {
document.addEventListener('DOMContentLoaded', callback, false);
}
/* Safari, iCab, Konqueror */
if (/KHTML|WebKit|iCab/i.test(navigator.userAgent)) {
var DOMLoadTimer = setInterval(function () {
if (/loaded|complete/i.test(document.readyState)) {
callback();
clearInterval(DOMLoadTimer);
}
}, 10);
}
/* Other web browsers */
window.onload = callback;
};
Pas testé, mais ça devrait fonctionner. Je l'ai simplifié de DOMAssistant, parce que DOMAssistant permet à de multiples rappels et dispose de vérification pour vous assurer que vous ne pouvez pas ajouter la même fonction deux fois etc.