2013-04-16 2 views
0

J'ai cherché sur le web, trouvé des réponses mais aucune d'entre elles ne fonctionne. Tout ce que je veux pour mon site à charger plus rapidement. J'ai minifié mes images. Maintenant, j'utilise jquery et la version utilisée hébergée par google. Bien qu'il ne soit pas hébergé sur mon site, c'est le fichier le plus lourd (32kb) du site et il se charge en 2ème position avant toute autre image. J'ai essayé l'ajout d'un javascript avant la balise de fermeture du corps comme celui-ci:Comment charger jquery last

<script language="javascript"> 

     var e=document.createElement('script'); 
     e.setAttribute('type','text/javascript'); 
     e.setAttribute('src','http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js'); 

     document.body.appendChild(e) 

     var f=document.createElement('script'); 
     f.setAttribute('type','text/javascript'); 
     f.setAttribute('src','myjs.js'); 
     document.body.appendChild(f) 
    </script> 

Sur la console Firebug, il montre que jquery est chargé dernier. Cependant, il montre également l'erreur de référence non interceptée $ non définie, ce qui suppose une erreur que vous obtenez lorsque jquery n'est pas chargé correctement.

Si je mets ces deux fichiers js à l'intérieur de l'étiquette de tête, tout fonctionne bien.

Comment puis-je accomplir cette tâche?

merci.

+0

. vous devez vous assurer que votre référence jQuery Library est chargée avant tout script. Pour améliorer la performance, quelle plate-forme ou vous? Si vous êtes sur .NET, vous pouvez utiliser le groupage. Sinon, essayez CDN. – HaBo

+4

Il suffit de les ajouter dans la tête comme le font les gens normaux. – adeneo

+3

Souhaitez-vous également reporter tout JavaScript à la fin de la page? Si vous renvoyez jQuery à la fin du chargement de la page mais que vous faites référence à jQuery dans un contexte non différé (c'est-à-dire non chargé), vous rencontrerez cette erreur. – Dogoferis

Répondre

1

Le chargement dynamique de fichiers javascript provoque leur chargement asynchrone, vous ne pouvez donc pas garantir quelle bibliothèque sera chargée en premier. Si vous avez besoin de faire respecter l'ordre (comme vous sera toujours avec une bibliothèque comme jQuery), vous aurez besoin d'ajouter script balises avec src attributs à la page comme ceci:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
<script type="text/javascript" src="myjs.js"></script> 

Si vous ajoutez vos balises de script comme le dernier éléments dans l'élément body plutôt que le head, il donnera l'apparence de chargement plus rapide (amélioration progressive).

EDIT Comme l'a noté l'un des commentateurs, vous pouvez lire la réponse à this question pour obtenir plus de détails. Concernant l'erreur de référence non interceptée $

+0

votre suggestion semble plus encline à résoudre mon problème. pas très bon avec javascript .. comment puis-je ajouter des balises de script et des attributs src sur le script fourni? –

+0

J'ai édité ma réponse pour inclure les balises de script. J'espère que cela t'aides! – cfs

+0

cela fonctionne .. merci –