KlausV: Daten aus iFrame auslesen

Hallo Forum

kurz gesagt versuche ich Daten aus einer iFrame abfrage auszulesen was mir aber nicht gelingt.

Die Situation ist folgende: von einem Wiki gibt es eine Abfrage mit der ein Datensatz aus einer Lotus Notes Anwendung ausgelesen und dargestellt wird.

Lotus Notes stellt diese Daten auf einer html Seite bereit die dann mittels iFrame in das Wiki eingeblendet wird.

Ich möchte nun diverse Variablen mit Datren aus dieser iframe Anfrage belegen.

Könnte mir jemand einen Tipp geben wie ich da vorgehen kann?

vg klaus

  1. Hallo KlausV,

    grundsätzlich müssen die HTML Seite, die den iframe enthält, und der Inhalt des iframe vom gleichen Origin kommen (Protokoll, Hostname, Port, z.B. https://example.org:4711 (Protokoll https, Hostname example.org, Port 4711)

    D.h. wenn deine Notes-Seite von https://xysite.notes.intranet/bla/fasel/tolleseite.jsp (oder ähnlichem) kommt, dann MUSS deine Rahmenseite von https://xysite.notes.intranet stammen, andernfalls lässt der Browser den Zugriff nicht zu, um zu vermeiden, dass jemand wildfremde Seiten im iframe hostet und Daten aberntet.

    (Nachdem ich gerade die Spec gelesen habe, stimmt das vermutlich nicht ganz, aber da ich das Konzept der origin-domain in der Spec gerade nicht kapiere und das sowieso etwas obsoletes sein soll, hoffe ich, eine gute Näherung aufgeschrieben zu haben).

    Wenn der Origin stimmt, dann hat das DOM Element zum iframe die Eigenschaft contentWindow, von da kommst Du ans document und an alle Inhalte.

    Die Alternative ist, mittels AJAX die HTML Seite in eine Variable zu laden statt in einen iframe, ein Document-Objekt daraus zu erzeugen und darin herumzuturnen. Setzt aber ebenfalls same origin voraus und geht schief, wenn die Seite ohne Script keinen brauchbaren Inhalt liefert.

    Rolf

    --
    sumpsi - posui - obstruxi
  2. Lieber KlausV,

    kurz gesagt versuche ich Daten aus einer iFrame abfrage auszulesen

    wie? Mit JavaScript? Du hast Deinem Posting ausschließlich das Tag html gegeben, weshalb ich das hier nachfragen muss.

    Die Situation ist folgende: von einem Wiki gibt es eine Abfrage mit der ein Datensatz aus einer Lotus Notes Anwendung ausgelesen und dargestellt wird.

    Das bedeutet, dass der Browser zweierlei HTML-Dokumente empfängt, soweit ist das offensichtlich. Mit HTML-Mitteln bist Du jetzt schon fertig, denn mehr ist mit HTML alleine nicht möglich. Entweder Du verwendest im Browser JavaScript für Deine Zwecke, oder Du lässt diese zwei Dokumente von einer serverseitigen Scriptsprache verarbeiten, die dann ähnliches leistet.

    Lotus Notes stellt diese Daten auf einer html Seite bereit die dann mittels iFrame in das Wiki eingeblendet wird.

    Bietet Lotus Notes das über einen HTTP-Server (lies: Webserver) an, oder wird die entsprechende HTML-Datei im übergeordneten HTML-Dokument schlicht von der Festplatte gelesen, oder speichert Lotus Notes diese Datei im Dateisystem des Webservers, von dem Dein übergeordnetes Dokument geladen wird, oder bewegen wir uns hier ausschließlich im Dateisystem ohne jeglichen Webserver dazwischen?

    Ich möchte nun diverse Variablen mit Datren aus dieser iframe Anfrage belegen.

    Aha, Du setzt eine Programmiersprache ein. Welche?

    Könnte mir jemand einen Tipp geben wie ich da vorgehen kann?

    Nicht, ohne mehr über Deine bisherigen Versuche zu wissen. Warum verheimlichst Du sie in Deinem Ausgangsposting? Warum muss man Dir das alles erst aus der Nase ziehen? Sehr lästig...

    Liebe Grüße

    Felix Riesterer

    1. Hallo Felix Riesterer,

      Nicht, ohne mehr über Deine bisherigen Versuche zu wissen. Warum verheimlichst Du sie in Deinem Ausgangsposting? Warum muss man Dir das alles erst aus der Nase ziehen? Sehr lästig...

      Von verheimlichen würde ich in dem Fall nicht sprechen. Möglicherweise weiß der OP gar nicht, welche Informationen relevant sind.

      „Sehr lästig“ kann auch sehr verletztend sein.

      Bis demnächst
      Matthias

      --
      Du kannst das Projekt SELFHTML unterstützen,
      indem du bei Amazon-Einkäufen Amazon smile (Was ist das?) nutzt.
      1. Lieber Matthias,

        Von verheimlichen würde ich in dem Fall nicht sprechen. Möglicherweise weiß der OP gar nicht, welche Informationen relevant sind.

        da bin ich bissiger drauf, als Du. Muss an meinen Auseinandersetzungen mit Schülern liegen, die auch nicht gerne "von zwölfe bis Läuten denken", wenn sie nicht müssen. Der OP schrieb:

        kurz gesagt versuche ich Daten aus einer iFrame abfrage auszulesen was mir aber nicht gelingt.

        Da gehört grundsätzlich wenigstens eine Andeutung dazu, was da "versucht" wurde. Wenn nicht, ist das eine unverhohlene Bitte, hier eine Bequemlichkeit zu bedienen. Wie gesagt, da reagiere ich gerne bissiger weil beruflich vorbelastet.

        „Sehr lästig“ kann auch sehr verletztend sein.

        Hätte ich meine Nachfragen sein lassen sollen und lieber überhaupt nichts posten?

        Liebe Grüße

        Felix Riesterer

        1. Hallo Felix Riesterer,

          Hätte ich meine Nachfragen sein lassen sollen und lieber überhaupt nichts posten?

          Lieber eine klare Ansage statt versteckter Vorwürfe: „Um dir helfen zu können, benötigen wir noch weitere Angaben. Was hast du schon versucht, an welcher Stelle hat es nicht funktioniert …“

          Bis demnächst
          Matthias

          --
          Du kannst das Projekt SELFHTML unterstützen,
          indem du bei Amazon-Einkäufen Amazon smile (Was ist das?) nutzt.
    2. Hallo

      erstmal danke für die Antworten.

      Verheimlichen? - Nein aber aus der Nase ziehen vielleicht schon da ich keine Ahnung habe was relevante Informationen sind.

      Meine Situation ist das ich ein Wiki (BlueSpice) habe mit dem ich mittels eines widgets das wiederum den Iframe Aufruf enthält eine HTML Seite abrufe die Daten enthält die ich gerne teilweise in Variablen einlesen möchte.

      Es handelt sich im Prinzip um eine Liste die abgerufen wird.

      und aus dieser liste möchte ich einzelne Werte in Variablen einlesen - ich dachte das es vielleicht einen "Befehl" bzw. ein Template gibt das ich für diesen Zweck benutzen könnte.

      Oder ein tipp wo ich mich im Netz nach einer Lösung umschauen könnte - selbst das würde mir Helfen da ich komplett auf dem Schlauch stehe.

      Grüße Klausv

      1. Hallo KlausV,

        meinen Beitrag bezüglich der grundsätzlichen Anforderungen (same origin) hast Du gelesen?

        Wenn das erfüllt ist, kannst Du mit JavaScript auf das DOM (=Objektbaum, der das HTML-Dokument abbildet) des iframe zugreifen.

        Wenn das nicht erfüllt ist, bist Du vom DOM des iframe ausgesperrt. Du kannst ggf. mittels Messaging etwas tun, aber das setzt voraus, dass die von Notes gelieferte Seite mitspielt.

        Die dritte Möglichkeit ist, dass der Server, der deine Seite erstellt, den Zugriff auf Notes durchführt und das gelieferte HTML Dokument analysiert. Dann hast Du das same origin Problem nicht. Das setzt dann aber voraus, dass auf dem Server PHP oder eine andere Serversprache läuft. Wenn Du statisches HTML auslieferst, kannst Du keine Verarbeitung auf dem Server durchführen (hm, ok, von Server-Side Includes abgesehen, damit könntest Du ein CGI Script ausführen, aber dann sollte man doch gleich die ganze Seite per Script rendern).

        Einfach ist es in keinem Fall, du musst schon ordentlich programmieren.

        Rolf

        --
        sumpsi - posui - obstruxi
      2. Lieber KlausV,

        erstmal danke für die Antworten.

        oh, keine Ursache.

        Oder ein tipp wo ich mich im Netz nach einer Lösung umschauen könnte - selbst das würde mir Helfen da ich komplett auf dem Schlauch stehe.

        Du hast meine Nachfragen nicht beantwortet. Ich kann Dir so nicht helfen.

        Liebe Grüße

        Felix Riesterer