Inhalt eines iFrames speichern

  • JavaScript

Es gibt 15 Antworten in diesem Thema. Der letzte Beitrag () ist von Dodo.

    Inhalt eines iFrames speichern

    Hallo,

    folgende Situation: Ich habe einen kleinen WYSIWYG-Editor auf einer Webseite dessen Inhalt ich gerne speichern würde.

    Leider habe ich nach ewiger Internetrecherche immer noch nicht herausgefunden, wie ich mittels VB an den Text des iFrames herankomme.

    Habe momentan eine Notlösung die zwar funktioniert aber eher unelegant ist: Ich übertrage mittels eines Extrabuttons den Inhalt des iFrames an ein HiddenField und dessen Inhalt speichere ich wiederum in eine Datei ab. Da dieser Vorgang aber mit JavaScript abläuft, heißen die Properties eines iFrames dort ja anders als bei VB.

    Hat jemand vielleicht eine Lösung für mein Problem?


    Edit by Dodo:
    -> Topic verschoben (Grundlagen => weitere Programmiersprachen)

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Dodo“ ()

    der iFrame hat sicher einen Namen um als Target zu dienen oder? Wenn ja kannst du ja den iFrame identifizieren und dann wiederum via Document.Body.InnterHTML an den Quelltext kommen. Eben ähnlich wie es wohlmöglich auch in JS machst.
    Ja der iFrame hat eine ID..das funktioniert aber leider nicht..

    erhalte nur die Meldung "document" ist kein Member von "System.Web.UI.HtmlControls.HtmlGenericControl"

    Das ist der Inhalt des "Speichern"-Buttons

    Quellcode

    1. Dim wr As New IO.StreamWriter("Y:\Eigene Dateien\test.html", False)
    2. wr.WriteLine(iView.document.body.innerText)
    3. wr.Close()

    iView ist hierbei der iFrame
    Ok das ist der Code für den Button, der den Inhalt des iFrames in das HiddenField überträgt (befindet sich auf der .aspx Seite im JavaScript Bereich):

    Quellcode

    1. function sendToField()
    2. {document.getElementById('hiddenField').innerText = document.getElementById('iView').contentWindow.document.body.innerText;
    3. }

    Der iFrame selbst sieht so aus:

    Quellcode

    1. <iframe id="iView" runat="server"></iframe>

    Schließlich speichere ich den Inhalt des HiddenFields dann wie oben zu sehen..

    In welche Variable sollte ich das iFrame denn holen? Vielleicht liegt hier das Problem...

    VB.NET-Quellcode

    1. Dim iView As HtmlElement = WebBrowser1.Document.GetElementById('iView')


    und dann dort wiederum über Document auf den Quelltext, ob es auch contentWindow gibt weiß ich nicht, da musst du ein wenig rumprobieren was die die HtmlElement-Klasse alles an Methoden und Eigenschaften bereitstellt.
    Ok..habe das jetzt soweit umgesetzt, stoße aber immernoch auf Probleme:

    1.HtmlElement scheint es wohl so gar nicht zu geben, jedenfalls wird es von Visual Studio nicht erkannt (höchstens HtmlForm oder HtmlControl)

    2.Was hat es mit dem WebBrowser1 auf sich ? Müsste ich das nicht auch irgendwo deklarieren ? Oder ist das so ein

    feststehender Begriff?
    Das ist glaube ich das Problem..
    Habe noch diese JavaScript Funktion :

    Quellcode

    1. function Init()
    2. {iView.document.designMode = 'On';
    3. }


    Diese wird dann hier ausgeführt:

    Quellcode

    1. <body onload="Init()">
    Somit habe ich im iFrame gar keine HTML Seite auf die ich zugreife.

    Also hat das bzw. nichts mit VB zu tun oder was?? Was macht es dann im VB Forum? Ich dachte du würdest über den WebBrowser auf einen iFrame zugreifen.

    Aber da es mir nun scheint nichts mit VB am hut zu haben verschiebe ichs mal nach Offtopic.
    Es ist eine Webseite (.aspx) die quasi als "Hintergrundcode" Visual Basic (.aspx.vb) benutzt.

    Ich dachte das würde sich dann VB.net schimpfen, anscheinend ist das aber nur eine Bezeichnung der neueren Versionen von Visual Basic.

    Ich habe also kein WebBrowser Element sondern nur einen iFrame den ich als Editor verwende.

    Möglicherweise wäre es einfacher, den iFrame durch eine TextBox zu ersetzen und dann per .Text darauf zuzugreifen.
    ASP ist in der Tat Visual Basic bzw. die Server Script Variante davon als äquivalent zu PHP z.B. dafür haben wir auch hier ein extra Forum wenn du die Startseite anschaust. Sowas wäre natürlich u.a. sehr Hilfreich gewesen wenn ASP im Vorfeld genannt hättest ^^

    Aber auch ASP hilft beim eigentlichen Problem nicht wirklich weiter, weil das wird ja auf dem Server ausgeführt, die Webseite mit dem iFrame allerdings auf den Clients, also bleibt dir dort nur JavaScript übrig.

    Du hast also vor den iFrame als WYSIWYG Editor zu nutzen und möchtest den geänderten Code aber anschließend auch speichern und benötigst deswegen den HTML Code aus dem iFrame um diesne Code in ein Hidden iIputfeld einer Form zu schreiben und diese dann an dein Script zu schicken, sehe ich das so richtig?
    Ganz genau..das mit dem vom iFrame zum HiddenField übertragen und anschließendem speichern des Inhaltes funktioniert auch.

    Nur wollte ich es so gestalten, das direkt der Inhalt des Frames gespeichert wird..nicht über den Umweg des HiddenFields.

    Das ganze soll später so laufen, dass man einen normalen Editor hat, den Text formatieren und sich auch den HTML-Code anzeigen lassen kann.

    Dieser Code soll dann später als HTML Datei gespeichert werden. (Das Ganze funktioniert auch schon wie ich oben beschrieben habe) Nur hapert es halt daran, dass ich über den VB-Code nicht an den Inhalt des Frames rankomme.