Felix Riesterer: Neue Seite nur aus Code generieren

Beitrag lesen

Lieber NCMasta,

gäbe es eine Möglichkeit, eine neue Seite per JS aufzurufen ohne eine existierende Datei?

nein. Du kannst aber ein neues Dokument mittels JavaScript generieren und in das DOM des Browsers schreiben. Für den Besucher ist es im Grunde eine neue Seite, der Besucher kann (wahrscheinlich, das müsste man prüfen) sogar mit dem Back-Button seines Browsers zum vorherigen Dokument zurück navigieren.

Für diesen Zweck gibt es http://de.selfhtml.org/javascript/objekte/document.htm#open@title=document.open() und http://de.selfhtml.org/javascript/objekte/document.htm#write@title=document.write().

Z.B ich rufe mit einem Button/Link eine neue Seite auf, evtl mit window.open(), gebe aber keinen Verweis an, sondern generiere den Quelltext der neuen Seite rein mit JavaScript, a la

var neueSeite = (document.write('<html><head></head><body><div >' + inhaltsvariable + '</div></body></html>'););

Dein Code ist insofern Murks, als dass Du das Klammernpaar um den Methodenaufruf "document.write" nicht benötigst, dieser sogar eher neue Probleme schafft (was genau soll document.write zurückliefern, das Du in einen Boolschen Wert konvertiert in der Variablen "neueSeite" abspeichern willst?) denn echten Nutzen bietet.

Davon abgesehen ist window.open nicht das, was Du suchst (oder willst Du ein neues Browserfenster öffnen?).

Ich habe etwas gesehen, was ich aber nicht so ganz verstanden habe - Dort ging es um ein Frameset, dessen SRC nicht mit einem Verweis bestimmt wurde sondern mit
... src="javascript.write();"...

Du kannst die Quelle eines Frames mittels JavaScript neu bestimmen, falls Dein JavaScript in einem Dokument steht, welches von derselben Domain wie der Inhalt des Frames geladen wurde (dieses Sicherheitsfeature nennt man "Same Origin Policy").

Ist das sowas ähnliches?

Nein, Dein Beispielcode ist absoluter Murks.

Ich hoffe ihr könnt mir helfen =)

Naja, was ist denn wirklich Hilfe für Dich? Du hast ja nicht erklärt, warum Du unbedingt JS-gesteuert vorgehen willst. Daher will ich Dir auch keinen Code vorkauen. Wesentliche Hinweise hast Du ja nun bekommen.

Liebe Grüße,

Felix Riesterer.

--
ie:% br:> fl:| va:) ls:[ fo:) rl:| n4:? de:> ss:| ch:? js:) mo:} zu:)