Markus: Mit JS html-Datei als Include in DIV laden

Hallöle liebe Scripter!

Hat jemand ne Ahnung wie ich per JS ne Includedatei laden kann?
Durchforsten des Archivs hat nix gebracht und googeln auch net.
Normal im html-Quelltext gehts so, dass weiß ich schonmal:
<!-- #include file="filname.htm"-->
Aber wie mach ich das denn bloß mit JS?

Danke, Markus

  1. Hallo Markus,

    das dürfte gar nicht gehen.

    Du kannst nur einen Trick benutzen und ein iframe oder ein "blindes Frame" zum Laden der Datei verwenden. Bei MS kann man das iFrame 0*0px² groß machen, andere Browser lehnen das aber ab. Mit einem "blinden Frame" müsse es aber klappen.

    Und dann kann man das, was da drinssteht per JavaScript in den sichtbaren Teil der Seite rüberkopieren.

    Liebe Grüße aus http://www.braunschweig.de

    Tom

    --
    Intelligenz ist die Fähigkeit, aus Fehlern Anderer zu lernen und Mut die, eigene zu machen.
  2. Hallo Markus,

    Hat jemand ne Ahnung wie ich per JS ne Includedatei laden kann?
    Durchforsten des Archivs hat nix gebracht und googeln auch net.
    Aber wie mach ich das denn bloß mit JS?

    Clientseitiges JavaScript bietet keinen Zugriff auf Dateien. Das hätte Deine Suche eigentlich zu Tage fördern sollen.

    Was Du benötigst, sind serverseitige Techniken, z.B. SSI (das was ich weggelöscht hab), PHP, ...

    Wobei Du natürlich wissen solltest, was Dir Dein Provider ermöglicht.

    Gruss,

    Vinzenz

    1. Hallo Vinzenz,

      Clientseitiges JavaScript bietet keinen Zugriff auf Dateien. Das hätte Deine Suche eigentlich zu Tage fördern sollen.

      Was Du benötigst, sind serverseitige Techniken, z.B. SSI (das was ich weggelöscht hab), PHP, ...

      Das ist nicht ganz richtig. Über die Src-Angabe von Iframes oder Frames kann ich sehr wohl zugreifen. Ich würde aber vermuten, dass die Domain dabei aber übereinstimmen muss. Das haben wir gerade erst durchprobiert...

      Der Browser wehrt sich sonst. Das würde dann ggf. auch bedeuten, dass ich nicht gleichzeitig von der lokalen Platte und aus dem Web lesen kann in einem Fenster mit zwei Frames. Ich hab das aber noch nicht probiert.

      Liebe Grüße aus http://www.braunschweig.de

      Tom

      --
      Intelligenz ist die Fähigkeit, aus Fehlern Anderer zu lernen und Mut die, eigene zu machen.
      1. Hallo Tom,

        Das ist nicht ganz richtig. Über die Src-Angabe von Iframes oder Frames kann ich sehr wohl zugreifen. Ich würde aber vermuten, dass die Domain dabei aber übereinstimmen muss. Das haben wir gerade erst durchprobiert...

        *g* Ja, das weiß ich auch, dass man so auf komplette HTML-Dateien zugreifen kann.

        Wie im Topic und außerdem im Thread [pref:t=35505&m=193747] (klappt, guter Tom ;-), scnr) nachzulesen ist, will Markus den _Inhalt_ einer Datei auslesen und dynamisch in einen DIV, nicht in einen Frame, auch nicht in einen IFrame, schreiben.

        Diese Art des Dateizugriffs, sei es lokal, sei es auf entfernte Rechner, geht mit JavaScript nun mal nicht (ausser mit Deinem Workaround mit blindem Frame *g*).

        Der Browser wehrt sich sonst. Das würde dann ggf. auch bedeuten, dass ich nicht gleichzeitig von der lokalen Platte und aus dem Web lesen kann in einem Fenster mit zwei Frames. Ich hab das aber noch nicht probiert.

        Gruss,

        Vinzenz

    2. Hallo»»

      Clientseitiges JavaScript bietet keinen Zugriff auf Dateien. Das hätte Deine Suche eigentlich zu Tage fördern sollen.

      Diese Aussage ist schlichtweg falsch. Es ist absolut kein Problem per JS XML-Dokumente mit dem IE und Mozilla (Opera weiß ich nicht) vom Server zu laden und per DOM in (fast) jedes Dokumentenelement einzusetzen. Natürlich muss das Dokument von der gleichen Domain geladen werden. Da du ein HTML-Dokument in einem DIV-Element einfügen möchtest, musst du dieses als XHTML-Dokument anlegen, da sonst der XML-Parser meckert (HTML ist nicht XML-konform). Weiterhin darf dieses Dokument nur den Inhalt des BODY-Tag enthalten (ohne HTML, HEAD, META, BODY usw.), da du sonst ein ungültiges Dokument erhältst (2 BODY-Tag`s sind nun mal nicht zulässig).

      Viele Grüße
      Thomas Mell

      1. Hallo Thomas,

        Diese Aussage ist schlichtweg falsch. Es ist absolut kein Problem per JS XML-Dokumente mit dem IE und Mozilla (Opera weiß ich nicht) vom Server zu laden und per DOM in (fast) jedes Dokumentenelement einzusetzen. Natürlich muss das Dokument von der gleichen Domain geladen werden. Da du ein HTML-Dokument in einem DIV-Element einfügen möchtest, musst du dieses als XHTML-Dokument anlegen, da sonst der XML-Parser meckert (HTML ist nicht XML-konform). Weiterhin darf dieses Dokument nur den Inhalt des BODY-Tag enthalten (ohne HTML, HEAD, META, BODY usw.), da du sonst ein ungültiges Dokument erhältst (2 BODY-Tag`s sind nun mal nicht zulässig).

        Danke für den Hinweis. Wieder was gelernt, also heute nicht umsonst aufgestanden. Und googeln brachte sofort ein Ergebnis. Werd' es nachher mal probieren.

        Grundsätzlich möchte ich dennoch von dieser Technik abraten, um dynamisch ein Menü zu laden, das sonst nicht vorhanden wäre.

        [a] Browservoraussetzung IE5+/NS6+/Mozilla/Opera 7 (Orlando ?)
        [b] JavaScript erforderlich

        Gruss,

        Vinzenz

      2. Hallo Thomas,

        könntest Du noch ein klein bisschen mehr darüber schreiben, wie das ohne Workaround und Umwege über blinde Frames oder "unsichtbare" iFrames geht?

        Das interessiert mich nämlich ungeheuer und außerdem will ich es dann j auch Vinzenz unter die Nase reiben *ggg*

        Liebe Grüße aus http://www.braunschweig.de

        Tom

        --
        Intelligenz ist die Fähigkeit, aus Fehlern Anderer zu lernen und Mut die, eigene zu machen.
        1. Hallo Tom,

          Das interessiert mich nämlich ungeheuer und außerdem will ich es dann j auch Vinzenz unter die Nase reiben *ggg*

          Das Dir das Spass machen wird, glaub' ich Dir gern *g*
          Hast auch recht, ich hab' mich weit aus dem Fenster gelehnt, ohne das Wissen aufzuweisen. Da darf ich mich über einen Fall nicht wundern ;-)

          Ein Beispiel findest Du bei http://www.javascriptkit.com/dhtmltutors/getxml.shtml

          Also es sollte gehen. Laß es uns testen :-)

          Gruss,

          Vinzenz