2008-09-24 3 views

Antwort

1

AFAIK sie verwenden IFRAMEs.

+1

Ich stimme dir zu. Google sollte etwas Ähnliches verwenden, da sie einen Post-zu-ihrem-Kalender-Dienst verwenden, der die Javascript-Bibliothek verwendet, die in JSONp nicht möglich ist. +1 – Ramesh

+1

Sie können jedoch keine Daten von einem domainübergreifenden Iframe abrufen - Sie können Daten hochladen, aber Sie können kein Ergebnis sehen. Da Sie GET-Argumente mit jsonp verwenden können, die Ihnen erlauben, das Gleiche wie Post zu senden (außer Dateien oder _groge_ Mengen von Daten), verwenden sie fast sicher keine iframes. – tobyodavies

+0

iframes sind die 2. dümmste Erfindung aller Zeiten. –

11

Sie umgehen es, indem Sie Skript-Tags dynamisch in den Kopf des Dokuments injizieren. Das Javascript, das über diese Injektion gesendet wird, enthält eine Callback-Funktion, die das Skript auf der geladenen Seite und die Nutzdaten (Daten) angibt.

Das Skript kann dann das dynamisch eingefügte Skript-Tag entfernen und fortfahren.

0

Eine andere Möglichkeit ist es, die window.name Transport zu verwenden, wie für den Dojo Framework beschrieben here

4

Die akzeptierte Antwort ist falsch. Ben hat Recht. Unten ist der tatsächliche Iframe-Knoten, der mit Hilfe der Google API JavaScript Client von einer Seite gezogen wurde.

<iframe name="oauth2relay678" id="oauth2relay678" 
     src="https://accounts.google.com/o/oauth2/postmessageRelay? 
      parent=https%3A%2F%2Fwww.example.com.au#rpctoken=12345&amp;forcesecure=1" 
      style="width: 1px; height: 1px; position: absolute; left: -100px;"> 
</iframe> 

Grund Zusammenfassung, wie das funktioniert, ist hier: http://ternarylabs.com/2011/03/27/secure-cross-domain-iframe-communication/. In modernen Browsern verwenden sie HTML postMessage, um Kommunikation zu erreichen, und in älteren Browsern verwenden sie einen sauberen Multiple-iframe-urlhash-read + write-combination-Hack. Ternary Labs haben eine library gemacht, die alle Hacky-Sachen abstrahiert und Ihnen im Grunde postMessage auf allen Browsern gibt.

Eines Tages wurde ich ontop dieser Bibliothek bauen werden Cross-Domain-REST-APIs zu vereinfachen ...

Edit: An diesem Tag ist gekommen und XDomain ist hier - https://github.com/jpillora/xdomain

0

Sieht aus wie Google Display-Karten verwenden die <img> tag Ich denke, sie verwenden die JavaScrit-Bibliothek, um alle Koordinaten und andere Parameter der src URL zu erarbeiten, dann fügen Sie die < Tags (zusammen mit einer Million anderer Tags) in Ihr DOM.

Die vollständige Karte unten mit mehreren Scheiben, wie die HTML aufgebaut:

< img src = "https://mts1.google.com/vt/[email protected] & hl = en & src = app & x = 32741 & s = & y = 21991 & z = 16 & scale = 1,100000023841858 & s = Galile "class = "CSS-3D-layer" style =" position: absolute; left: 573px; top: 266px; width: 128px; Höhe: 128px; Rahmen: 0px; Auffüllung: 0px; Rand: 0px; " >

(Sie können diesen HTML-Code in Ihre eigene Webseite einfügen um das Ergebnis zu sehen)

So Google Maps nicht verwendet AJAX oder etwas zu bekommen ihre Karten einfach nur Bilder, on the fly erstellt. Also keine Cross-Domain-Probleme zu kümmern ...

Verwandte Themen