Olli: Javascript-Code dynamisch einbinden

Hallo!

Ich möchte eine externe Javascript-Datei im HTML Code einbinden. Soweit auch kein Problem. Aber der Inhalt (also der Code) der Javascript-Datei ändert sich ständig. Wenn ich die geänderte JS-Datei dann ein zweites mal einbinden möchte, wird dennoch der ältere Code der älteren Datei ausgegeben. Also wird die Datei ja doch nicht "dynamisch eingebunden". Wer kann mir helfen?

  1. Hallo!

    Ich möchte eine externe Javascript-Datei im HTML Code einbinden. Soweit auch kein Problem. Aber der Inhalt (also der Code) der Javascript-Datei ändert sich ständig. Wenn ich die geänderte JS-Datei dann ein zweites mal einbinden möchte, wird dennoch der ältere Code der älteren Datei ausgegeben. Also wird die Datei ja doch nicht "dynamisch eingebunden". Wer kann mir helfen?

    Du kannst in einem Frameset ein "Javascript" Frame anlegen, in dem du dynamisch per document.write() den code einbindest.

    Struppi.

    1. Du kannst in einem Frameset ein "Javascript" Frame anlegen, in dem du dynamisch per document.write() den code einbindest.

      Struppi.

      Danke für den Hinweis. Leider kenne ich mich noch nicht sehr gut mit HTML und CO aus, also mit anderen Worten: Was ist ein Frameset? ;-)

      Kannst du mir ein Code-Beispiel geben, wie ich JS-Code dynamisch in das Frameset laden kann?
      Und wo ist der Unterschied, ob ich den Code normal oder in ein Frameset lade?

      Olli

      1. Danke für den Hinweis. Leider kenne ich mich noch nicht sehr gut mit HTML und CO aus, also mit anderen Worten: Was ist ein Frameset? ;-)

        http://selfhtml.teamone.de/html/frames/index.htm
        Aber wenn du dass nicht weißt, bezweifel ich ebenfalls dass das dein Problem löst.

        Kannst du mir ein Code-Beispiel geben, wie ich JS-Code dynamisch in das Frameset laden kann?

        <script>

        function test()
        {
        with(self.code.document)
        {
        open();
        write('<html><head><script type="text/javascript" src="code.js"></script>');
        write('</head></html>');
        close();
        }

        ... jetzt musst du nur noch prüfen, ob die Seite komplett geldane wurde, bzw. in Code.js deine Hauptfunktion aufrufen.

        }
        </script>
        <frameset rows="100%">
        <frame src="about:blank" name="code">
        </frameset>

        Und wo ist der Unterschied, ob ich den Code normal oder in ein Frameset lade?

        Du willst den Code ja nicht normal laden und nachträglich kannst du JS- Code nicht laden.

        Struppi.

        1. Schade, das hilft mir leider nicht weiter.

          Ich kenne Framesets doch, ich verwende sie sogar selbst ;-)
          Ich kannte nur den Namen dafür nicht, weil ich mit Microsoft Frontpage arbeite und da heisst das ganze "Framesseiten".
          Und die Bezeichnung "Frameset" im Code hatte ich wohl übersehen. *g*

          Olli

  2. Moin!

    Ich möchte eine externe Javascript-Datei im HTML Code einbinden. Soweit auch kein Problem. Aber der Inhalt (also der Code) der Javascript-Datei ändert sich ständig.

    Wer ändert den Code?

    Wenn ich die geänderte JS-Datei dann ein zweites mal einbinden möchte, wird dennoch der ältere Code der älteren Datei ausgegeben. Also wird die Datei ja doch nicht "dynamisch eingebunden". Wer kann mir helfen?

    Es scheint alles darauf hinauszulaufen, dass dein Browser glaubt, die Javascript-Datei im Cache halten zu können. Folglich ist der Ansatzpunkt Nummer 1 die HTTP-Auslieferung der Javascript-Datei. Du mußt veranlassen, dass diese mit passenden HTTP-Headern ausgeliefert wird, so dass die Browser die Datei nicht mehr cachen.

    Und wie man sowas macht, hängt eben entscheidend davon ab, wer oder was für die Änderungen in der Javascript-Datei verantwortlich ist.

    Eine andere Lösung wäre, die externe Javascript-Datei eben nicht mehr extern zu empfangen, sondern als Bestandteil der jeweiligen HTML-Seite mit einzubinden. Aber auch das ist abhängig von deinen Möglichkeiten.

    Die vorgeschlagene Frameset-Lösung wird am Caching nichts ändern, ich halte sie für irreführend.

    - Sven Rautenberg

    --
    ss:) zu:) ls:[ fo:} de:] va:) ch:] sh:) n4:# rl:| br:< js:| ie:( fl:( mo:|
    1. Hallo!

      Die Datei wird vom Besucher geändert. Wenn ein Besucher auf meine Seite kommt, hat er die Möglichkeit in meiner Link-Sammlung einen eigenen Link hinzuzufügen. Jetzt fragt sich bestimmt jeder: Warum benutze ich nicht eine einfache Datenbank, sondern eine JS-Datei?
      Das liegt daran, dass ich bei meinem Provider (AOL) keine Möglichkeiten habe, eine Datei auf dem AOL-Server zu erstellen, bzw. auszulesen. Es gibt dort nur eine einzige Methode, mit der man so etwas machen kann, und das ist ein vorgefertigtes AOL-Script, dass ich nicht verändern kann. Das Script erlaubt es mir nur, eine Template-Datei zu erstellen und einen Datei-Pfad anzugeben, in der die Eintragungen formatiert gespeichert werden. Diese Datei sollte standardmäßig eine HTML-Endung haben, damit man diese dann als Gästebuch benutzen kann. Das wollte ich aber nicht, da ich ja erstens kein Gästebuch will und zweitens noch vor und nach dem Code etwas hinzufügen wollte, um zum Beispiel die Eintragungen in einer Tabelle zu ordnen. Also habe ich mich entschlossen, dass AOL-Standard-System einfach zu ignorieren, und den Inhalt der Template-Datei als Javascript-Code zu gestalten und zwar so:

      document.writeln('<tr>');
      document.writeln('<td> <a href="http://#link#" target="_blank">#link#</a></td>');
      document.writeln('<td> #beschreibung#</td>');
      document.writeln('</tr>');

      Nun habe ich im Code angegeben, dass die Datei, in der die Einträge formatiert gespeichert werden, keine HTML-Endung sondern eine JS-Endung hat. Nun habe ich mir eine andere HTMl-Datei erstellt und binde das "eigentliche HTML-Gästebuch" einfach als Javascript im Code ein. Das erlaubt es mir, vor und nach dem Gästebuch weiteren Code ausführen zu lassen.

      Das mit dem Header klingt sehr gut. Was muss ich in die .JS-Datei schreiben, damit diese nicht vom Browser im Cache gehalten wird? Dies lässt das AOL-Script nämlich zu, da es an die bestehende Datei, in der die Einträge gespeichert werden, die neuen Einträge nur hinzufügt und die Datei nicht immer komplett neu generiert. So kann ich vor die bestehende Datei einfach einen Header schreiben.

      Olli