2009-06-18 9 views
1

Ich habe eine HTML-Seite mit einem iFrame, von dem ich ein paar Variablen lesen möchte. Es ist im Grunde eine Karte, aus der ich die Breiten- und Längengradwerte abrufen möchte.Zugriff auf Variablen in einem iFrame, oder Vice Versa

Ich habe an Adobe AIR gearbeitet, und ich habe versucht, Werte aus innerHTML, contentWindow, abrufen, aber immer noch nicht funktioniert.

Haben Sie gute Möglichkeiten, dies zu erreichen?

+0

Sind Seiten innerhalb iframe und Haupt in der gleichen Domäne? –

Antwort

0

Sie können mit jQuery auf Inhalte innerhalb eines Iframes zugreifen.

<iframe id="iframeId" ...> .... <div id='someData'>data</div> ....</iframe> 
$('#iframeId').contents().find('#somedata').html(); // returns data 
+2

wird es nicht für cross-Domain-Fall funktionieren. –

1

Das Browser-Sicherheitsmodell verbietet jeglichen domänenübergreifenden Datenverkehr/Kommunikation. Die Regeln können, wenn wir es mit verschiedenen Sub-Domains zu tun haben, bis zur Top-Domain gelockert werden. Aber letztendlich haben Sie keinen Rückgriff.

Wenn Sie Anwendungen haben, die über Domänengrenzen hinweg sprechen müssen, ist es normalerweise am besten, über ein Backend zu gehen. Wenn Sie den Inhalt im iframe nicht kontrollieren, haben Sie normalerweise kein Glück. Zu guter Letzt, Google Maps bieten eine API für die Verwendung ihrer Anwendung. http://code.google.com/apis/maps/index.html

0

Danke für die Antwort Jungs,

@svend: Was genau ist „über ein Back-End gehen“? Ich verstehe das nicht. Ich kontrolliere den Inhalt im iFrame, der auf einer anderen Domain ist.

@Webber: Danke für den Link webber ... Sieht aus wie seine gonna für mich funktionieren .. Ich werde das ausprobieren ...

+0

Ich denke, Svend bedeutete, dass Sie den Iframe-Inhalt über die Domäne, von der die Containerseite bedient wird, proxyten sollten. – anddoutoi

0

Der Antrag auf Nichtanwendung Sandboxbrücke arbeitete bei Cross-Domain-Kommunikation ..

Danke für die Antworten Jungs ..

0

ich hatte es auf diese Weise zu tun:

1- innerhalb der Datei versteckte Eingänge hinzufügen, die das iframe enthält, wo sie die lng speichern und Lat, wenn der Benutzer sie ändert.

2- Erstellen Sie diese Funktion auf js:

function getFrameWindow(frameId) { 

    var frame = document.getElementById(frameId); 
    var result = null; 
    if (frame.contentDocument) { 
    // For NS6 
    result = frame.contentDocument.window || frame.contentDocument.defaultView; 
    } else if (frame.contentWindow) { 
    // For IE5.5 and IE6 
    result = frame.contentWindow; 
    } else if (frame.document) { 
    // For IE5 
    result = frame.document.window; 
    } 
    return result; 
} 

3- diesen Code aus der Javascript verwendet, die die iframe enthält:

getFrameWindow("iframe").document.getElementById("lat").value 
+0

Sie können auch Variablen anstelle von versteckten Eingaben hinzufügen und so auf sie zugreifen: getFrameWindow ("iframe"). Document.variable_name – Luci

Verwandte Themen