11548 sujets

JavaScript, DOM et API Web HTML5

Modérateur
Salut,

j'aimerai avoir votre avis sur ce code SVP :

<!DOCTYPE HTML>
<html lang="fr">
<head>
    <meta charset="UTF-8">
    <title>bla</title>
</head>
<body>
    <script type="text/javascript" src="jquery.js"></script>
    <script type="text/javascript">
    if($.browser.webkit){
        $('head').append('<script type="text/javascript" src="unScript.js"></script>');
    }else{
        $('head').append('<script type="text/javascript" src="unAutreScript.js"></script>');
    }
    $(function(){
        //suite du script....
    });
    </script>
</body>
</html>


personnellement, j'ai eu des soucis par le passé pour avoir oublié le document ready. Je crois que d'une manière générale, ce n'est pas bon de le faire. Je pense que c'est surtout un souci de conception pour le coup. Là, le DOM est chargé puisque l'appel est en bas. La personne qui a écrit ce script me dit qu'il veut que le dom (le pourquoi du document ready) ne se charge pas encore pour pour exécuter son append....

Merci de m'aiguiller
Modifié par niuxe (12 Apr 2012 - 22:32)
Salut,

À moins que je ne me trompe, en disposant du code Javascript au bas de ta page juste avant la fermeture de </body>, l'attente de DOM ready est en fait inutile puisque ce dernier est déjà prêt.

Cela dit, il s’agit évidemment d'une bonne pratique que de s'assurer que son code ne soit exécuté qu'après que le DOM soit prêt car une personne pourrait bien décider de remonter celui-ci dans le head, ou peu importe. C'est une sécurité qui ne handicape en rien l'exécution de son code.

Dans tous les cas, la personne qui a écrit ce script semble avoir tord. Tout d'abord, parce que son code ne se charge pas avant que le DOM ne soit prêt, et ensuite parce que ce faisant, son code pourrait causer problème s'il est déplacé ailleurs dans la page. Il devrait définitivement le mettre entre la fonction jQuery $(function(){});
Hello.

Pas mieux que Vaxilart, le fait de ne pas placer la portion de code dans le DOM ready dans le cas présent n'a aucun intérêt, et peux mener à des soucis (en particulier avec IE).

Ici, si le but est que le script ajouté via .append s'exécute avant le ready, c'est raté, vu qu'il va se charger et s'exécuter de façon asynchrone.

Point de détail, utiliser $.brower est une très mauvaise idée, d'ailleurs son utilisation est dépréciée, la variable va dégager du core de jQuery sous peu si mes souvenirs sont bons.
Modérateur
Merci pour vos réponses. Ça répond bien à mon intuition.

@Florian_R :
a écrit :
Point de détail, utiliser $.brower est une très mauvaise idée, d'ailleurs son utilisation est dépréciée, la variable va dégager du core de jQuery sous peu si mes souvenirs sont bons.


+1. Merci pour cette petite info intéressante. Smiley smile
Modifié par niuxe (13 Apr 2012 - 23:31)