Il y a quelques problèmes ici. Tout d'abord, la méthode de chargement asynchrone que vous avez spécifiée:
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript">
google.load('jquery', '1.3.1');
google.setOnLoadCallback(function() {
// do stuff
});
</script>
a quelques problèmes. Les balises de script mettent en pause le chargement de la page pendant leur récupération (si nécessaire). Maintenant, s'ils sont lents à charger, c'est mauvais mais jQuery est petit. Le vrai problème avec la méthode ci-dessus est que parce que le chargement de jquery.js se produit indépendamment pour de nombreuses pages, ils termineront le chargement et restitueront avant que jquery ne soit chargé, donc tout style jquery que vous effectuez sera un changement visible pour l'utilisateur .
L'autre façon est:
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.1/jquery.min.js"></script>
Essayez quelques exemples simples comme, avoir un tableau simple et changer l'arrière-plan des cellules en jaune avec la méthode setOnLoadCallback () vs $ (document) .ready () avec une charge statique jquery.min.js. La deuxième méthode n'aura aucun scintillement notable. La première volonté. Personnellement, je pense que ce n'est pas une bonne expérience utilisateur.
À titre d'exemple, exécutez ceci:
<html>
<head>
<title>Layout</title>
<style type="text/css">
.odd { background-color: yellow; }
</style>
</head>
<body>
<table>
<tr><th>One</th><th>Two</th></tr>
<tr><td>Three</td><td>Four</td></tr>
<tr><td>Five</td><td>Six</td></tr>
<tr><td>Seven</td><td>Nine</td></tr>
<tr><td>Nine</td><td>Ten</td></tr>
</table>
<script src="http://www.google.com/jsapi"></script>
<script>
google.load("jquery", "1.3.1");
google.setOnLoadCallback(function() {
$(function() {
$("tr:odd").addClass("odd");
});
});
</script>
</body>
</html>
Vous (devriez) voir le tableau apparaître, puis les lignes deviennent jaunes.
Le deuxième problème avec la méthode google.load () est qu'elle n'héberge qu'une plage limitée de fichiers. C'est un problème pour jquery car il est extrêmement dépendant du plug-in. Si vous essayez d'inclure un plugin jquery avec une <script src="...">
balise et que google.load()
le plugin échouera probablement avec des messages de "jQuery n'est pas défini" car il n'a pas encore été chargé. Je ne vois pas vraiment de solution.
Le troisième problème (avec l'une ou l'autre méthode) est qu'il s'agit d'une charge externe. En supposant que vous ayez quelques plugins et votre propre code Javascript, vous devez au moins deux demandes externes pour charger votre Javascript. Vous feriez probablement mieux d'obtenir jquery, tous les plug-ins pertinents et votre propre code et de le mettre dans un fichier minifié.
De Devriez - vous utiliser l'API Ajax bibliothèques Google pour hébergement? :
En ce qui concerne les temps de chargement, vous chargez en fait deux scripts - le script jsapi et le script mootools (la version compressée ci-dessus). C'est donc deux connexions, plutôt qu'une. D'après mon expérience, j'ai constaté que le temps de chargement était en réalité 2 à 3 fois plus lent que le chargement à partir de mon propre serveur partagé personnel, même s'il provenait de Google, et ma version du fichier compressé était deux fois plus grande que celle de Google. Ceci, même après que le fichier a été chargé et (vraisemblablement) mis en cache. Donc pour moi, puisque la bande passante n'a pas beaucoup d'importance, ça ne va pas avoir d'importance.
Enfin, vous avez le problème potentiel d'un navigateur paranoïaque signalant la demande comme une sorte de tentative XSS. Ce n'est généralement pas un problème avec les paramètres par défaut, mais sur les réseaux d'entreprise où l'utilisateur peut ne pas contrôler le navigateur qu'il utilise, sans parler des paramètres de sécurité, vous pouvez avoir un problème.
Donc, à la fin, je ne peux pas vraiment me voir utiliser l'API Google AJAX pour jQuery au moins (les API les plus "complètes" sont une histoire différente à certains égards), sauf pour publier des exemples ici.
src
syntaxe plus simple / plus sûre / plus rapide que vous utilisez maintenant? Votre réponse est devenue fondamentalement canonique et les deux changements aideraient les gens à obtenir ce pour quoi ils sont venus rapidement.