Wie kann man den Reload eines Iframes unauffälliger gestalten?

1 Antwort

Vom Fragesteller als hilfreich ausgezeichnet

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.

klugshicer 
Fragesteller
 28.12.2017, 22:11

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?

0
regex9  28.12.2017, 22:41
@klugshicer

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.

0
MonkeyKing  28.12.2017, 22:55
@klugshicer

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>

0
regex9  28.12.2017, 23:43
@MonkeyKing

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.

0
klugshicer 
Fragesteller
 29.12.2017, 12:41
@klugshicer

Inzwischen habe ich mich eingehend mit Ajax befasst und diverse Tests durchgeführt.

Wie es aussieht ist Ajax tatsächlich die eleganteste Lösung.

0