11
votes

Est-ce correct d'utiliser google.setonLoadCallback plusieurs fois?

Je construis un site à l'aide de ASP.NET MVC et j'ai des vues partielles qui utilisent JQuery pour faire diverses choses. Je pensais à passer à l'API Ajax de Google et à utiliser leur chargeur pour charger JQuery. Cependant, j'ai remarqué que je ne serais plus en mesure d'utiliser $ (document) .Readady () plus parce que le chargeur de Google spécifie un rappel Google.setonLoadCallback () .

C'est un peu un problème pour moi parce que j'ai $ (document) .Ready () dans diverses vues partielles parce qu'ils font des choses différentes spécifiques à elles-mêmes que je ne veux pas que je ne veux pas la vue parent à prendre conscience de.

Puis-je spécifier plusieurs rappels et simplement échanger le $ (document) .Ready () S avec google.setonloadCallback (someuniquecallbackfunction) ?

serait-ce le moyen idéal de gérer cette situation ou y a-t-il quelque chose d'autre qui est préféré?


2 commentaires

Pour ces vues partielles, vous les rendant avec la page ou de manière dynamique (par exemple, via une onglet Ajax)?


Dans une page régulière. Je n'utilise pas Ajax à ce stade.


3 Réponses :


0
votes

On peut manquer le point ici, mais il n'y a pas de choc entre votre USERCONTROLS $ (document) .Ready et Google.setonLoadCallback que je connais.

En supposant que vous utilisiez Google pour charger jQuery, votre code dans le document $ (document) .Ready ne fonctionnera pas avant que Google ait chargé JQuery.

Tant que JQuery est chargé dans votre MasterPage, je ne sais pas quel est le problème.


2 commentaires

Je vais essayer cela et voir si cela fonctionne. J'ai essayé d'utiliser le SetonloadCallback et $ (document) .Ready dans le même fichier HTML sur le terrain de jeu de Google API et cela n'aimait pas cela. Peut-être que je vais bien avec les contrôles des utilisateurs, cependant!


Cela semble fonctionner bien. J'ai un fichier maître qui utilise google.load (jQuery) puis plus tard dans une vue, j'utilise $ (document) .Ready et ça marche bien!



32
votes

Oui, vous pouvez utiliser setonloadCallback code> au lieu de $ (document) .Ready code>. Il existe un deuxième paramètre non documenté (ou au moins, je ne peux pas le trouver) qui spécifie quand appeler la fonction de rappel; Les valeurs possibles sont "FALSE" (par défaut) - sur la charge de la fenêtre ou "vrai" - sur la charge DOM (DomContentOached). L'événement DOM incendie une fois que tout le marquage a chargé (beaucoup plus tôt que la fenêtre.Load). Les feux d'événement de la fenêtre de la fenêtre après toutes les images et scripts et telles ont fini de chargement.

// Very similar to $(window).load()
// Same as google.setOnLoadCallback( OnLoad, false );
google.setOnLoadCallback( OnLoad );


3 commentaires

C'est ce qui m'a aidé. J'aimerais que cela soit mieux documenté.


Vous venez de faire ma journée.


Il est maintenant documenté que setonLoadCallback peut être appelé plusieurs fois.



2
votes

J'ai couru dans le même problème. J'ai Googled avoir 2 recherches Google en cours d'exécution sur une page, etc ...

À la fin, j'ai trouvé cela et je voulais avoir 2 panneaux indiquant essentiellement des résultats de recherche Google sur une page. P>

google.setOnLoadCallback(LoadGoogleNewsResults);
google.setOnLoadCallback(LoadGoogleNewsResultsForum);


0 commentaires