Drachir: Dynamische Texteinbindung

Ich habe in meiner HTML-Datei eine weitere (die in erster Linie Text enthält) in Form eines Objektes eingebunden:

<object id="TXT" data="stories/text2.htm" type="text/html" width="640" height="100" border="2">

Jetzt möchte ich mit einer Funktion einen anderen Text an diese Stelle setzen:

function Wechsel () {
document.getElementById("TXT").data  = "stories/neuertext.htm";
}

Das funktioniert aber nicht.
Jedoch kann ich in der gleichen Funktion z.B. die Breite des Objektrahmens erfolgreich ändern. Gibt es bei der Variable "data" etwas Besonderes zu beachten?

  1. hallo Drachir,

    Ich habe in meiner HTML-Datei eine weitere (die in erster Linie Text enthält) in Form eines Objektes eingebunden:
    <object id="TXT" data="stories/text2.htm" type="text/html" width="640" height="100" border="2">

    Das ist zwar so bescheuert, daß bisher niemand auf die Idee einer solchen "Lösung" kommen wollte, aber offensichtlich hat dir das bisher ja keine Probleme bereitet, oder?

    Jetzt möchte ich mit einer Funktion einen anderen Text an diese Stelle setzen:
    function Wechsel () {
    document.getElementById("TXT").data  = "stories/neuertext.htm";
    }
    Das funktioniert aber nicht.

    Nein, das _kann_ es auch nicht.

    Jedoch kann ich in der gleichen Funktion z.B. die Breite des Objektrahmens erfolgreich ändern. Gibt es bei der Variable "data" etwas Besonderes zu beachten?

    Nein. Es gibt aber für deine Grundkonstruktion etwas zu beachten: Wenn du Inhalte einer anderen Datei "dynamisch" in ein HTML-Dokument einbinden willst, brauchst du irgendeine serverseitige Technik. Mit HTML alleine hat das gar nix zu tun. Auch deine "Funktion" ist ja vermutlich bereits Javascript.

    Grüße aus Berlin

    Christoph S.

    --
    Visitenkarte
    http://www.christoph-schnauss.de
    ss:| zu:) ls:& fo:) va:) sh:| rl:|
    1. Christoph,

      Das ist zwar so bescheuert, daß bisher niemand auf die Idee einer solchen "Lösung" kommen wollte, aber offensichtlich hat dir das bisher ja keine Probleme bereitet, oder?

      Unterlasse es bitte, die Fragesteller in diesem Forum zu beschimpfen und zu verunglimpfen.

      Vor allem dann, wenn Du im Unrecht bist und das Problem offenbar nicht kapiert hast. Sein Anliegen ist nicht „bescheuert“ sondern verdammt berechtigt. Eine ganz natürliche Reaktion auf ein tatsächliches Problem in der Javascript-Programmierung, nämlich die Unfähigkeit, object-Elemente wie img- oder iframe-Element zu benutzen. Dummerweise, schließlich ist object im Prinzip die bessere Variante der beiden letzteren Element und wird seit Jahren vom W3C gehypt.

      Wenn du Inhalte einer anderen Datei "dynamisch" in ein HTML-Dokument einbinden willst, brauchst du irgendeine serverseitige Technik. Mit HTML alleine hat das gar nix zu tun.

      Und bitte rede Dich nicht wieder damit raus, dass der Frager den falschen Themenbereich gewählt hat und Du ihm mit diesem Statement darauf hinweisen möchtest. Du fragst Dich ernsthaft, weswegen Du so oft als schroff rüber kommst? Postings wie dieses sind der Grund; es ist beleidigend und exterm am Thema vorbei gekurvt.

      Tim

      1. hallo Tim,

        Unterlasse es bitte, die Fragesteller in diesem Forum zu beschimpfen und zu verunglimpfen.

        Das habe ich nicht getan. Die Vokabel "bescheuert" erfüllt die von dir unterstellten Ktiterien nicht.

        Und bitte rede Dich nicht wieder damit raus, dass der Frager den falschen Themenbereich gewählt hat

        Das hat er nicht, und das habe ich auch nicht behauptet. Was also willst du mir jetzt sagen?

        Du fragst Dich ernsthaft, weswegen Du so oft als schroff rüber kommst?

        Ja, bisweilen tu ich das. Das hast du richtig gelesen.

        Grüße aus Berlin

        Christoph S.

        --
        Visitenkarte
        http://www.christoph-schnauss.de
        ss:| zu:) ls:& fo:) va:) sh:| rl:|
        1. Hi,

          Unterlasse es bitte, die Fragesteller in diesem Forum zu beschimpfen und zu verunglimpfen.
          Das habe ich nicht getan. Die Vokabel "bescheuert" erfüllt die von dir unterstellten Ktiterien nicht.

          Gut!

          Christoph? Du bist wirklich bescheuert! :-)

          Gruß, Cybaer

          --
          Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
          1. hallo Cybaer,

            Christoph? Du bist wirklich bescheuert! :-)

            ok, ich habe jetzt einen "hilfreich"-Stempel draufgedrückt und neue Erkenntnisse über mich selbst angesammelt.

            Grüße aus Berlin

            Christoph S.

            --
            Visitenkarte
            http://www.christoph-schnauss.de
            ss:| zu:) ls:& fo:) va:) sh:| rl:|
  2. Hallo,

    document.getElementById("TXT").data  = "stories/neuertext.htm";
    Das funktioniert aber nicht.

    Der Knackpunkt ist es dummerweise, dass wohl kaum einer der Browser bei einer Änderung des Attributes data für nötig erachtet, den Inhalt des Object-Elementes neu zu laden. Ist zwar dumm, aber verpflichtend ist das nicht. Also muss es anders gelöst werden.

    Man hat zwar mittels des (nicht in SELFHTML dokumentierten) Shortcuts contentDocument Zugriff auf das etwaig vorhandene document-Element der im object-Element enthaltenen Ressource, allerdings hat man auch dort keine Möglichkeit, die Adresse zu ändern; die Objekte window und document bzw. Javascript und DOM sind nun mal zwei verschiedene Paar Schuhe. Hier im Forum hat jemand namens Avalon mal vorgeschlagen, dass das im object-Element enthaltene Dokument eine Referenz auf sein window-Objekt per Javascript an das Dokument, das das object-Element enthält. Schön ist das nicht – und auch nicht praktikabel, wenn im object-Element andere Inhalte als HTML-Ressourcen enthalten sind. Wenn, dann ist es aber praktikabel.

    Die zweitgängigste Lösung für dieses Problem ist die brutalste Variante, nämlich einfach das object durch ein neues mit den passenden Parametern ersetzen. Entweder bequem mittels innerHTML wie im Forumsarchiv von Marc Reichelt vorexerziert oder aber mit DOM-Methoden, wie in diesem Beispiel von mir.

    Die wohl gängigste Methode? Einfach ein iframe-Element benutzen. ;)

    Tim

    1. Ich danke Dir fuer diese ausfuerliche und hilfreiche Antwort.

      Gleich nachher, wenn ich zu Hause bin, versuche ich es mal mit der "Ersetzen" - Methode.
      Dann koennte ich den gleichen Code ja auch fuer andere Dokumente verwenden, z.B. Bilder und Texte gleichwertig behandeln (sehe ich doch richtig, oder?).
      Das wuerde meine geplante Seite deutlich schlanker machen. :)