2010-11-30 4 views
0

Ich versuche, Jsonp zu verwenden, um ein Seitenleistungsproblem zu lösen, das ich habe. Auf meiner Website zeige ich normalerweise Anzeigen an, indem ich ein Skript-Tag wie dieses document.write("<scr" + "ipt src='advendor.com\myad.php'></scr" + "ipt>"); schreibe. Das ist alles gut und gut, mit Ausnahme der Tatsache, dass die Seiten die Skript-Tags darauf hindeuten, dass sie die unangenehme Angewohnheit haben, sehr langsam zu sein. Wenn ich also eine Seite mit 5 Anzeigen habe, kann sie die Ladezeit meiner gesamten Seite aufgrund der Blockierung von synchronen Anfragen halten.Wie jsonp verwenden, um Javascript-basierte Anzeigenaufrufe auf eine Seite asynchron zu bekommen

Also meine Idee war es, einen JSONP-Aufruf an den Ad-Service, der mir das Skript-Tag, das auf die Seite geschrieben werden muss. Das Problem dort ist, bekomme ich das <script> Tag auf der Seite, aber das Skript-Tag tut nichts. Funktioniert das Skript nur, wenn es vor document.ready geschrieben wird?

CLARIFICATION: Momentan haben wir unseren serverseitigen Code, der Aufrufe an ein Ad Serving-System tätigt, so dass er bestimmt, welchen Anzeigencode ich serverseitig bekomme (in diesem Fall ein Skript-Tag mit einem "src =") welches die tatsächliche Anzeige und die Verfolgung erzeugt). Ich versuche zu verhindern, dass die Anzeigenaufrufe das Laden meiner Inhalte blockieren. Also möchte ich zuerst Inhalt und dann alle Anzeigen. Es ist keine akzeptable Lösung, die Skript-Tags unten auf der Seite zu platzieren, da ich feststellen muss, wo die Anzeigen auf der Seite erscheinen. IE, <div id="adOneHere"><script src="vendorssite.com"></script></div>, kann ich bis zu fünf dieser Anzeigenaufrufe auf einer Seite haben. Jeder hat seine eigenen Bilder/Tracking/etc ...

Mein Problem ist ähnlich dem adressierten here, außer dass ich das "Skript" -Tag von einem zentralen Server aus mehreren Domänen erhalten muss, und ich muss tun das document.write in einem bestimmten dom-Element, ich bin in jQuery gut bewandert, wenn das hilft.

+1

Unterstützt der Anzeigenservice JSONP? – alex

+0

Ich schrieb es, wenn es notwendig ist, um dies zu erreichen, werde ich das Feature hinzufügen –

Antwort

0

Es stellte sich heraus, dass ich das benötigte (link text). Wenn Sie Skript-Tags laden müssen, die nach dem Ereignis zum Laden der Seite Code laden und ausführen, ist dies der richtige Weg.

0

document.write() ist sehr langsam und pausiert HTML-Parsing, während es ausgeführt wird. Sie könnten die Anzeigen in das DOM für DOM-ready einfügen. Es besteht keine Notwendigkeit, das <script>-Tag über JSONP zu ziehen. Fügen Sie ein kleines Skript direkt vor dem abschließenden </body> -Tag hinzu, das diese <script> -Tags der Seite hinzufügt, wo sie benötigt wird.

+0

-relusive Ich versuchte dies zu tun, aber das Javascript nach dem Laden der Seite schreibt nur den Code auf der Seite, der Browser analysiert es nie, so dass es nie ausgeführt. Kennen Sie eine Lösung für dieses Problem? –

0

Versuchen Sie mit jQuery getScript, innerhalb einer $(document).ready Funktion, damit es die Anzeigen lädt, nachdem der Rest der Seite angezeigt wird.

(ich weiß nicht, ob dies mit den Ad-Skripten funktioniert ...)

+0

das würde funktionieren, aber ich muss einen XSS-Aufruf –

0

Try and JQuery getScript inline verwenden, genau dort, wo die document.write ist. Dies ist asynchron und muss nicht in Verbindung mit $ (document) .ready() verwendet werden.

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

Es gibt ausführliche Diskussion hier: Can't append <script> element auf andere Möglichkeiten, dies und das Verhalten von JQuery zu erreichen, wenn diese andere Art und Weise zu tun versuchen.

+0

machen das würde funktionieren, aber ich muss einen XSS-Aufruf machen –

Verwandte Themen