Quel est l'équivalent non-jQuery de $(document).ready()
?
Cela ne répond pas à la question et ne montre pas non plus de code non JQuery. Comment se fait-il qu'il ait reçu autant de votes positifs ?
Quel est l'équivalent non-jQuery de $(document).ready()
?
Cela fonctionne parfaitement, par l'ECMA
document.addEventListener("DOMContentLoaded", function() {
// code...
});
L' window.onload
ne marche pas égal à JQuery $(document).ready
parce que JQuery n'attend que de l'arborescence DOM, tandis que la Vanille JS vérifier tous les éléments, y compris les avoirs extérieurs et des images.
EDIT: Ajout d'IE8 et plus équivalent, grâce à Derk Jan
document.attachEvent("onreadystatechange", function(){
if (document.readyState === "complete"){
document.detachEvent( "onreadystatechange", arguments.callee );
// code ...
}
});
Une petite chose, j'ai mis en place
domready.js
(function(exports, d) {
function domReady(fn, context) {
function onReady(event) {
d.removeEventListener("DOMContentLoaded", onReady);
fn.call(context || exports, event);
}
function onReadyIe(event) {
if (d.readyState === "complete") {
d.detachEvent("onreadystatechange", onReadyIe);
fn.call(context || exports, event);
}
}
d.addEventListener && d.addEventListener("DOMContentLoaded", onReady) ||
d.attachEvent && d.attachEvent("onreadystatechange", onReadyIe);
}
exports.domReady = domReady;
})(window, document);
Comment l'utiliser
<script src="domready.js"></script>
<script>
domReady(function(event) {
alert("dom is ready!");
});
</script>
Vous pouvez également modifier le contexte dans lequel la fonction de rappel s'exécute en passant un second argument
function init(event) {
alert("check the console");
this.log(event);
}
domReady(init, console);
La bonne chose à propos de $(document).ready()
, c'est qu'il se déclenche avant que l' window.onload
. La fonction load attend jusqu'à ce que tout est chargé, y compris les avoirs extérieurs et des images. $(document).ready
, cependant, se déclenche lorsque l'arbre du DOM est complet et peut être manipulé. Si vous souhaitez réaliser DOM prêt, sans jQuery, vous pouvez vérifier dans cette bibliothèque. Quelqu'un extrait juste le ready
partie de jQuery. Sa belle et de petites et vous trouverez peut-être utile:
Cela ne répond pas à la question et ne montre pas non plus de code non JQuery. Comment se fait-il qu'il ait reçu autant de votes positifs ?
@DanielW. Parce que c'est simple et pratique. La plupart d'entre nous sont venus ici pour chercher un moyen de s'assurer que le DOM est prêt à être utilisé par le code javascript.
En JavaScript pur, sans aucune bibliothèque ? C'est une erreur. $
est simplement un identificateur et est indéfini à moins que vous ne le définissiez.
jQuery définit $
en tant que son propre "objet tout" (également connu sous le nom de jQuery
afin que vous puissiez l'utiliser sans conflit avec d'autres bibliothèques). Si vous n'utilisez pas jQuery (ou une autre bibliothèque qui le définit), alors $
ne sera pas défini.
Ou demandez-vous quel est l'équivalent en JavaScript ? Dans ce cas, vous voulez probablement window.onload
qui n'est pas exactement équivalent, mais qui est le moyen le plus rapide et le plus simple d'obtenir le même effet en JavaScript vanille.
Pour les nombreux détracteurs de cette réponse (et des autres ci-dessous) : lorsque cette question a été posée, elle disait simplement : "Qu'est-ce que $(document).ready() en javascript ? Pas jquery. Qu'est-ce que c'est ?" On aurait dit qu'il demandait ce que cela signifiait en JavaScript classique, sans jQuery chargé. Dans ma réponse, j'ai tenté de répondre à cette question, ainsi que de donner la réponse la plus simple et la plus proche pour le JavaScript vanille sans jQuery ou d'autres bibliothèques, au cas où c'est ce qu'il voulait dire. Notez que tout le contexte supplémentaire a été ajouté par d'autres personnes qui ont deviné ce que la question demandait, et non par l'auteur de l'article.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
4 votes
Si vous souhaitez reproduire la méthode jQuery
$(document).ready()
sans utiliser de bibliothèque, jetez un coup d'œil à ceci : stackoverflow.com/questions/1795089/5 votes
Duplication possible de Équivalent de $(document).ready sans jQuery