2010-11-30 24 views
0

J'essaie d'utiliser jsonp pour résoudre un problème de performance de page que j'ai eu. Sur mon site, j'affiche généralement des annonces en écrivant un tag de script comme celui-ci document.write("<scr" + "ipt src='advendor.com\myad.php'></scr" + "ipt>");. Tout ceci est bien, sauf que les sites sur lesquels les tags de script pointent ont la mauvaise habitude d'être très lents. Donc, quand j'ai une page avec 5 annonces sur elle, il peut contenir mes pages entières en raison du blocage des requêtes synchrones. Donc, mon idée était de faire un appel JSONP au service de publicité qui va me donner la balise de script qui doit être écrite sur la page. Le problème est que j'obtiens la balise <script> sur la page mais, la balise de script ne fait rien. Le script ne fonctionnera-t-il que s'il est écrit avant document.ready? Actuellement, nous avons notre code côté serveur qui appelle un système de diffusion d'annonces afin qu'il détermine quel code d'annonce je reçois côté serveur (dans ce cas, une balise de script avec un "src =" qui pointe vers le site des fournisseurs, qui génère l'annonce et le suivi réels). Ce que j'essaye de faire est d'arrêter les appels d'annonce de bloquer le chargement de mon contenu. Donc, je veux d'abord le contenu, puis toutes les annonces. Mettre les balises de script au bas de la page n'est pas une solution acceptable car je dois déterminer où les annonces apparaissent sur la page. IE, <div id="adOneHere"><script src="vendorssite.com"></script></div>, je peux avoir jusqu'à cinq de ces appels d'annonce sur une page. Chacun a ses propres images/suivi/etc ...Comment utiliser jsonp pour obtenir des appels d'annonces basés sur javascript sur une page, de façon asynchrone

Mon problème est similaire à celui adressé here, sauf que j'ai besoin d'obtenir le "script" tag d'un serveur centralisé à partir de plusieurs domaines, et je dois faire le document.write à l'intérieur d'un élément dom spécifique, je suis bien versé dans jQuery si cela aide.

+1

Le service d'annonces prend-il en charge JSONP? – alex

+0

Je l'ai écrit donc si cela est nécessaire pour cela j'ajouterai cette fonctionnalité –

Répondre

0

Il s'avère que c'est ce dont j'avais besoin (link text). Si vous devez charger des balises de script qui chargent et exécutent du code après l'événement de chargement de la page, c'est le chemin à suivre.

0

document.write() est très lent et interrompt l'analyse HTML pendant son exécution. Vous pouvez insérer les annonces dans le DOM sur DOM-ready. Il n'est pas nécessaire de tirer le <script> -tag via JSONP. Ajouter un petit script juste avant la fermeture </body> -tag qui ajoute ces <script> -tags à la page si nécessaire.

+0

-elusive J'ai essayé de le faire mais écrire le javascript après le chargement de la page met juste le code sur la page, le navigateur ne l'analyse jamais. Connaissez-vous une solution à ce problème? –

0

Essayez d'utiliser le getScript de jQuery, à l'intérieur d'une fonction $(document).ready afin qu'il charge les annonces une fois le reste de la page affiché.

(Je ne sais pas si cela fonctionne avec les scripts publicitaires ...)

+0

cela fonctionnerait, mais je dois faire un appel XSS –

0

Essayez d'utiliser JQuery getScript en ligne, exactement là où l'document.write est. Ceci est asynchrone et n'a pas besoin d'être utilisé conjointement avec $ (document) .ready().

<script>$.getScript("advendor.com\myad.php");</script> 

Il y a une discussion détaillée ici: Can't append <script> element sur d'autres moyens pour y parvenir et le comportement de JQuery en essayant de faire cette autre manière.

+0

cela fonctionnerait, mais je dois faire un appel XSS –