[jQuery] Comportement - Version imprimable +- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org) +-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38) +--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51) +--- Sujet : [jQuery] Comportement (/showthread.php?tid=4117) |
[jQuery] Comportement - phenix - 20-06-2009 Bonjour à tous, Je me trouve face a un dilem d'optimisation: Tout mon site utilise Ajax pour fonctionner, et comme le veux les bonnes pratiques, je place le javascript dans un fichier a part qui est inclut sur toutes les pages. Seulement voila, si la div qui doit reçoit n'est pas présente, que ce passe t'il ? jQuery charge t il la page quand même (et donc fait travailler le serveur) ou bien ignore t'il la requête ? J'utilise load(), pour info. Merci de votre aide (h) RE: [jQuery] Comportement - Sephi-Chan - 20-06-2009 Je ne comprends pas… Peux-tu préciser s'il te plaît ? Avec éventuellement du code en guise d'exemple. Sephi-Chan RE: [jQuery] Comportement - phenix - 20-06-2009 Bha imaginons: ce code, placer sur toutes les pages:
Avec bien sur, le réceptacle :glace:
Mais seulement sur la page "fiche.php". Que va t'il ce passer sur les autres page sachant que la div n'y figure pas ? jQuery va charger la page mais ne l'affichera pas ? ou va t'il ignorer la requête (et donc ne pas surcharger le serveur) ? RE: [jQuery] Comportement - Sephi-Chan - 20-06-2009 Je pense qu'il appelle quand même la page, mais qu'il n'en fait rien puisqu'il ne sait pas où le mettre. Dans le doute, essaye : incrémente une variable de session dans le script inventaire.php, ainsi tu sauras bien si la page a été appelée. Dans tous les cas, tu peux faire :
Sephi-Chan RE: [jQuery] Comportement - phenix - 20-06-2009 Merci de ton aide . J'ai finalement opté pour une autre solution, plus simple au final. Il faudra un jour que je vérifie ce que fait jQuery dans un cas comme sa, on pourrait supposé qu'il cherche d'abord si le réceptacle existe avant de faire les actions qui lui sont associé. Je ferais le teste quand j'aurais le temps RE: [jQuery] Comportement - Thedeejay - 21-06-2009 Oui mais -sans vouloir partir sur le débat- Mootools à malheureusement une librarie de scripts tres minime par rapport à celle de JQuery sur le net... Mais je préfere Moo car mes 3 scripts préférés sont codés avec :p RE: [jQuery] Comportement - phenix - 21-06-2009 J'ai fait tout mon site avec jQuery, j'ai chier pour comprendre son fonctionnement. Pas vraiment envie de tout reprendre a 0... Citation :Il a moins de scripts à dispositions, mais finalement ça ne me dérange pas, je programme ce dont j'ai besoin. J'ai codé tout mes scripts jQuery, même ceux qui existait déjà sur le net. Pour apprendre et comprendre ce que je fais. (h) RE: [jQuery] Comportement - arcanis - 26-06-2009 jQuery fait la liste de tous les éléments correspondant au sélecteur donné, puis applique a chacun d'entre eux la fonction load(). Donc si l'élément n'existe pas, la fonction load() n'est pas déclenchée. Vérifie tout de même (avec firebug, par exemple, pour voir si la requête xhr est déclenchée), mais normalement c'est ça. [edit] Après vérification du code, Sephi-chan a raison: pour des raisons de performance, jQuery lance d'abord la requête puis applique ensuite le résultats aux objets sélectionnés. Ca ne génerera donc pas d'erreur, mais la requête sera quand même lancée. Code source complet de la fonction:
RE: [jQuery] Comportement - barst - 26-06-2009 Ta commande n'aurait pas bloqué ta page. En fait quand tu utilises un sélecteur dans jQuery, il retourne un tableau d'élement correspondant au sélecteur et il exécute ensuite les commandes sur ce tableau en bouclant sur chaque élément retourné. Si le sélecteur ne retourne rien, tu auras comme même un tableau en retour mais vide. C'est ce qui évite de planter sur un sélection ne ramenant rien et ça évite de tester l'existence des éléments avant. RE: [jQuery] Comportement - arcanis - 27-06-2009 Mais vu que la requête est tout de même exécutée, si la page en question a une action spéciale (du style insérer une valeur en db), alors il faut tester. |