Wie kann man den Reload eines Iframes unauffälliger gestalten?
Die lokale Webseite meines Raspberry PIs zeigt auf dem angeschlossenen Touchscreen eine Webseite im Kiosk-Modus an.
Diese Web-Seite beinhaltet zwei Iframes, deren Inhalt mit JavaScript alle paar Minuten neu geladen wird.
Dabei flackern die Iframes jedes mal kurz auf.
Kann man die Seiten irgendwie im Hintergrund neu laden um sie dann unauffällig zu aktualisieren?
1 Antwort
Aktualisiere nicht die komplette Seite sondern nur die Bereiche, die aktualisiert werden sollen. Dazu musst du mit JS einzelne Requests an den Server schicken (bspw. per AJAX).
Das Aktualisieren der kompletten Seite wird wohl immer zum Flackern führen, da die komplette Seite im Frame neu gerendert werden muss.
Ja, das ist möglich, aber das solltest du nicht tun. 2 Gründe:
- Du stößt wieder auf das gleiche Problem, Elemente neu zu rendern (nur diesmal via JS).
- Du würdest einem JavaScript die Last aufbürden, HTML parsen und danach ersetzen zu müssen. In diesem Fall würde es mehr Sinn machen, es beim derzeitigen Zustand zu belassen.
Lege dir mit PHP ein Objekt an, welches nur (!) die Textdaten enthält, die sich ändern. Dieses Objekt kann in ein JSON-Objekt konvertiert werden. Die Funktion json_encode sollte da anwendbar sein.
Mit JavaScript holst du dir das Objekt, iterierst über dessen Daten und ersetzt die jeweiligen Informationen im DOM ein.
Das ist nicht nötig - du erstellst eine normale HTML Seite, aber mit der Endung .php und fügst dann die dynamischen Teile mit PHP ein, etwas so:
<title><?php echo $title ?></title>
Das bringt ihm doch aber nichts. Ob die Seite im Hintergrund nun dynamisch mit PHP zusammengebaut wird oder nicht, eine automatische Aktualisierung im Browser erfolgt dennoch nicht.
Inzwischen habe ich mich eingehend mit Ajax befasst und diverse Tests durchgeführt.
Wie es aussieht ist Ajax tatsächlich die eleganteste Lösung.
Jetzt habe ich aber ein Problem.
Die Seite die in einem der Iframes geladen wird, ist so etwas wie ein Terminkalender bzw. Schichtplan (recht komplex aufgebaut).
Weißt Du ob es möglich ist, in PHP eine ganze Seite in eine Variable zu Scheiben um sie dann als Antwort an ein Ajax-Script zu übermitteln?