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.