Der Martin: Stringbearbeitung in Javascript (HTML Seite einlesen?)

Beitrag lesen

Hallo Jan,

Ich möchte es gerne teilweise auf JS portieren.

jetzt, wo ich den Eindruck habe, dass ich so langsam die Tragweite deines Projekts erkenne, hab ich eine andere Idee; ich versuche mal, sie zu erklären.

Also ein PHP-Script soll ein Dokument aus mehreren Abschnitten erzeugen, die Generierung jedes Abschnitts dauert aber relativ lange. Der Besucher soll außerdem, wenn's geht, die schon behandelten Abschnitte bereits sehen können.

Beim ersten Aufruf des Scripts wird eine Session gestartet, der erste Abschnitt des Dokuments erzeugt. Den fertigen Quelltext dieses ersten Abschnitts speichert es in der Session, sendet ihn aber gleichzeitig als fertiges HTML-Dokument an den Client. Im head-Element steht eine meta-Weiterleitung, die dasselbe Script erneut aufruft.
Beim zweiten Aufruf nimmt das Script die bisher in der Session gespeicherten Abschnitte, fügt den nächsten Abschnitt dazu, speichert das Ergebnis wieder in der Session und schickt es als komplettes HTML-Dokument an den Client.
Und so weiter, bis alle Abschnitte bearbeitet sind. Im letzten Schritt bleibt einfach die Weiterleitung weg.

Die Realisierung ist sicher aufwendig. Aber sie hat den Vorteil, dass das Script immer nur eine vergleichsweise kurze Laufzeit hat, und der Besucher kann das, was schon fertig ist, wenigstens schon sehen. Lästig ist allerdings, dass das Dokument dann bei jedem neu hinzugeladenen Abschnitt wieder an den Anfang springt - aber das kann man eventuell lösen, indem man auf jeden Abschnitt im Dokument einen Anker setzt und jeweils den letzten davon automatisch anspringt. Dann sieht es so aus, als ob das Dokument nach und nach geladen wird und automatisch weiterscrollt, wenn nötig.

Auf anhieb fällt mir aber nicht ein wie man automatisch ein PHP script mit java lädt bzw. ein Javacript aus PHP(ohne benutzer einwrikung bis alles abgearbeitet ist).

Bei diesem Lösungsansatz könnte wieder das AJAX-Konzept ins Spiel kommen. Das Javascript fordert per XmlHttpRequest() die dynamisch generierten Teile an, einen nach dem anderen. Jedesmal, wenn das Ergebnis eines Requests fertig empfangen ist, wird es in den DOM-Elementbaum eingehängt und dann der nächste Teil auf die gleiche Weise angefordert.
Einfacher ist das sicher nicht, und es setzt voraus, dass deiner Besucher Javascript aktiviert haben. Der Vorteil ist aber, dass man den Ladevorgang weniger sprunghaft und damit unauffälliger gestalten kann.

Ciao,
 Martin

--
Man sollte immer wissen was man sagt
 - aber auf keinen Fall alles sagen, was man weiß.