HTML in Seite laden
marc123
- javascript
0 minicrispie0 marc1230 minicrispie0 marc123
0 Beat0 molily
Hey,
ich habe ein Problem: Ich möchte dynamisch eine Seite in meine Website reinladen.
Diese Seite beinhaltet ganz normalen (auch dynamischen/JS) Content und CSS-Angaben. Diese sind im HEAD-Bereich spezifiziert (sind aber nicht ausgelagert). Nach dem dynamischen Einfügen in die Seite sollen noch alle JS-Befehle korrekt ausführbar sein und die CSS-Angaben für die Darstellung korrekt ausgeführt werden.
Eine Alternative zu der JS-Lösung wäre ein IFRAME. Gibt es hier noch andere Möglichkeiten? (und bitte nicht den Vorschlag, den IFRAME standardmäßig zu benutzen, danke :) )
Viele Grüße & Danke für euere Anregungen
marc
Hallo,
Hey,
ich habe ein Problem: Ich möchte dynamisch eine Seite in meine Website reinladen.
ist die Seite von deiner Domain?
Wenn nein, hast du ein Problem mit der SOP, und kannst das erst mal "knicken" ;)
[...]Gibt es hier noch andere Möglichkeiten?
nutze doch einen eigenen Namensraum für deine JavaScripte und präfixe für deine CSS-Klassen.
MfG. Christoph Ludwig
Hey!
ja, die liegen alle auf meiner Domain... D.h. du würdest mit Ajax ganz normal laden oder wie? Und den eigenen NS dafür festlegen? Aber dann kann ich doch die Header gar nicht "mitnehmen" oder?
Viele Grüße!
Hallo,
Hey!
ja, die liegen alle auf meiner Domain... D.h. du würdest mit Ajax ganz normal laden oder wie? Und den eigenen NS dafür festlegen? Aber dann kann ich doch die Header gar nicht "mitnehmen" oder?
na eigentlich doch.
Nehmen wir mal an:
deine seite ist A
die zu ladende seite ist B
Dem Script, welches die B in A lädt, gibst du einen eigenen Namensraum:
var namensraum = {
MeineFunktion = function()
{
//...
}
};
//Erreichbare Funktion: namensraum.MeineFunktion();
oder auch präfixe:
function präfix_meineFunction() {}
Klassen, die du für für A nutzt, gibst du einen präfix. z.b.:
präfix_meineKlasse{}
MfG. Christoph Ludwig
Hey!
dann wäre ja der Namensraum die wohl "schönere" Lösung, oder?
D.h. ich hätte eine Funktion
var dynamic = {
AjaxLoadPage= function()
{
//...
}
};
//Erreichbare Funktion: dynamic.AjaxLoadPage();
Diese würde dann die komplette HTML-Seite laden, die ich dann in einem DIV ausgeben könnte (ich darf doch nicht <html> in einem <html> haben, oder?)
Kann es sein, dass es dann auch Überschneidungen bei den CSS-Angaben gibt (weil vll. die CSS-Angaben in dem neuen File für "textarea" etwas anderes definieren als für die Hauptseite definiert ist und diese Angabe für die Folgende Verarbeitung der Seite dann überschreiben?)...
Oder irre ich mich da?
Viele Grüße!
ich habe ein Problem: Ich möchte dynamisch eine Seite in meine Website reinladen.
Eine Alternative zu der JS-Lösung wäre ein IFRAME. Gibt es hier noch andere Möglichkeiten? (und bitte nicht den Vorschlag, den IFRAME standardmäßig zu benutzen, danke :) )
Ich zieh mal die Notbremse.
Nimm eine Serverseitige Sprache wie PHP oder Perl um deine Seiten dynamisch zusammenzubauen.
Auch wenn du AJAX verwenden willst, brauchst du eine serverseitige Sprache.
mfg Beat
Hallo Beat,
Auch wenn du AJAX verwenden willst, brauchst du eine serverseitige Sprache.
warum?
Gruß, Jürgen
Auch wenn du AJAX verwenden willst, brauchst du eine serverseitige Sprache.
warum?
Weil einige wichtige User-Agents kein JS ausführen.
mfg Beat
Hallo Beat,
»» > Auch wenn du AJAX verwenden willst, brauchst du eine serverseitige Sprache.
»» warum?Weil einige wichtige User-Agents kein JS ausführen.
und deswegen benötige ich für AJAX eine serverseitige Sprache?
Gruß, Jürgen
»» > Auch wenn du AJAX verwenden willst, brauchst du eine serverseitige Sprache.
»» warum?
Weil einige wichtige User-Agents kein JS ausführen.
und deswegen benötige ich für AJAX eine serverseitige Sprache?
Für das Putzpersonal ist das optional.
mfg Beat
Diese Seite beinhaltet ganz normalen (auch dynamischen/JS) Content und CSS-Angaben. Diese sind im HEAD-Bereich spezifiziert (sind aber nicht ausgelagert). Nach dem dynamischen Einfügen in die Seite sollen noch alle JS-Befehle korrekt ausführbar sein und die CSS-Angaben für die Darstellung korrekt ausgeführt werden.
Man kann CSS und HTML mit viel Sorgfalt so schreiben, dass du den gesamten body-Inhalt eines anderen Dokuments in ein Element des bestehenden Dokuments lädst. (Natürlich solltest du kein gesamtes Dokument in ein anderes laden. Im body des einen sollte also kein weiteres <!DOCTYPE ...><html><head>... usw. stehen.) Da könnten dann auch script- und style-Elemente drinstehen. Letzteres ist zwar aus HTML-Sicht nicht erlaubt, die Browser machen es aber mit. Selbstverständlich überschreiben bzw. addieren sich die CSS-Regeln, denn die Selektoren beziehen sich auf das gesamte Dokument - es sei denn, du grenzt die Selektoren durch Nachfahrenselektoren so ein, dass sie jeweils nur eindeutig auf Elemente zutreffen, die aus einem Dokument stammen:
#eingebettetesDokument textarea {}
Anders herum ist es etwas komplizierter, wenn du einem Element weit oben die ID » ursprungsDokument« gibst, dann wird die Regel #ursprungsDokument textarea {} auch auf das eingebettete Dokument, wenn es darin liegt.
Alles in allem sehr viel Aufwand - warum willst du dir den geben? Besser du formatierst beide Dokumente im einem Stylesheet bzw. baust ein allgemeines und ein spezielles Stylesheet. Dasselbe gilt für die Scripte, die sollten bestenfalls gekapselt und in sich abgeschlossen sein. Wenn du auf beide Dokumente Einfluss hast, dann dürfte das doch kein Problem sein - wieso aber den Effekt eines Iframes erzielen ohne Iframe?
Mathias