4 Stimmen

Plattformübergreifende Browser-Kommunikation zwischen Seite und IFRAME (gleicher Bereich)

Für einen speziellen Zweck mit Aweber bezüglich eines Newsletter-Abonnements habe ich eine Seite, die ein verschachteltes IFRAME lädt, und beide befinden sich auf derselben Domain. (In vielen anderen Stackoverflow-Beiträgen ist von verschiedenen Domains die Rede, aber in dieser Frage geht es nur um die gleiche Domain). Ich brauche einen plattformübergreifenden Weg (einschließlich Browsern, die so alt sind wie die Anfänge des IE6), damit die beiden miteinander kommunizieren können.

Beispiel: Jemand gibt seinen Namen und seine E-Mail-Adresse ein und klickt auf ein Kontrollkästchen, und der versteckte IFRAME neben dem Kontrollkästchen befindet sich in einer setInterval()-Schleife, die darauf wartet. Wenn er eine Benachrichtigung erhält, erfasst er den Namen und die E-Mail-Adresse und sendet ein Formular.

Ich dachte zuerst, dass ich einfach ein Cookie auf der übergeordneten Seite ablegen könnte, und dann könnte das IFRAME-Kind in einem Intervall sitzen und auf dieses Cookie warten. Aber meine Tests zeigen, dass das nicht funktioniert. Das Cookie wird erstellt, aber der IFRAME kann es nicht sehen. Also habe ich die Meta-Refresh-Technik im IFRAME ausprobiert, und auch hier konnte das Cookie aus irgendeinem Grund nicht erkannt werden.

Die einzige Lösung, die mir einfällt, ist, dass die übergeordnete Seite den Klick auf das Kontrollkästchen aufnimmt (wir verwenden jQuery) und einen AJAX-Daten-Push an den Server in eine Datenbank durchführt. Die IFRAME kann dann in einem Intervall zurück zum Server über AJAX überprüfen, ob der Datenbankwert geändert hat, und darauf reagieren, wenn ja. Aber das scheint eine übertechnisierte Lösung zu sein, und ich suche nach einer einfacheren Alternative, die plattformübergreifend funktioniert, auch in früheren Browsern ab dem Zeitrahmen von IE6 und weiter.

4voto

Aaron Digulla Punkte 308693

Es ist viel einfacher: In der iframe können Sie auf die parent Variable, die das übergeordnete Fenster enthält. Sie können also verwenden parent.document um das Formular zu finden, die Werte zu lesen usw.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X