Ich habe eine Website, die aus einer übergeordneten Seite besteht. Mit der jQuery-Plugin-Farbbox im Lightbox-Stil öffne ich andere Seiten in iFrames, die auf der übergeordneten Seite im Overlay-Stil schweben.Wie kann ich einen Wert auf einem Elternteil eines iFrames mit jQuery speichern und darauf zugreifen?
Im JavaScript-Code auf den iFrame-Seiten lade ich JSON-Daten von Facebook. Da das Laden der Daten von Facebook Zeit kostet, möchte ich die Daten, die ich geladen habe, in einer Variablen speichern, die auf der übergeordneten Seite liegt.
Jedes Mal, wenn ich einen neuen iFrame in einem Overlay öffne, möchte ich prüfen können, ob die Variable der übergeordneten Seite leer ist oder nicht. Wenn es leer ist, lade ich die Daten von Facebook. Wenn es nicht leer ist, erhalte ich die Daten von der Variablen auf der Elternseite.
Der einzige Grund, warum ich dies tun möchte, ist die Leistung zu erhöhen und unnötige Aufrufe an die Facebook-API zu vermeiden.
Wie erstelle ich eine Lösung, in der ein JavaScript in einem iFrame Daten von einer Variablen speichern und auf sie zugreifen kann, die auf ihrer übergeordneten Seite lebt?
ich nicht echten Code haben, aber in Pseudo-Code würde ich so etwas wie dies mag:
function loadFacebookFriends() {
if(parentFriendsVariable is empty) {
Load friends from Facebook
}
else {
localFriendsVariable = parentFriendsVariable
}
}
Der Aufruf der Facebook-API wie folgt aussieht:
FB.api("/me/friends?fields=name,first_name,picture", function(friendsData) {
// When this callback is executed, the data I want is
// now in the object:
friendsData.data
});
On die übergeordnete Seite mein JavaScript-Code ist in einem jQuery-Dokument bereit Tag.
Vielen Dank im Voraus!
/Thomas Kahn
Sind die Eltern und das Kind "IFrames" in der gleichen Domäne leben? – msuhash
können Sie nicht wondow.parent verwenden.? –
msuhash
Ja, sowohl die übergeordneten als auch die Iframes werden vom selben Webserver in derselben Domäne geladen. Ich habe Experimente mit window.parent.variable gemacht, aber es funktioniert nicht wie ich es erwarte. Könnte die Tatsache, dass mein Code in jQuery verpackt ist, die Ursache sein? – tkahn