wadi: iframe-inhalt als variable ausgeben

hallo experten

eine counterabfrage mit iframe liefert mir im frame eine zahl 'NUM'. mit javascipt möchte ich NUM weiterverarbeiten, beispielsweise so:

if (NUM > 500) {anweisung}

NUM müsste dazu wohl als variable definiert werden. - für eine so einfache geschichte habe ich auf die schnelle nichts passendes gefunden (nur viel anspruchsvolleres, das ich leider vergeblich umzusetzen versucht habe). um ein javascript-studium fürs erste zu umgehen, bitte ich um einen scriptvorschlag.

herzlichen dank im voraus - wadi

  1. Hallo,

    eine counterabfrage mit iframe liefert mir im frame eine zahl 'NUM'.

    Das ist keine Zahl.

    mit javascipt möchte ich NUM weiterverarbeiten, beispielsweise so:

    Was _genau_ steht _wo_ im IFrame? Wie gesagt, ist "NUM" keine Zahl.

    viele Grüße

    Axel

    1. Hallo,

      eine counterabfrage mit iframe liefert mir im frame eine zahl 'NUM'.
      Das ist keine Zahl.

      gut, das war missverständlich. ich meine eine ganz normale zahl, zb. 386, die dann, wie angegeben, in einer if-bedingung weiterverwendet werden soll.

      mit javascipt möchte ich NUM weiterverarbeiten, beispielsweise so:
      Was _genau_ steht _wo_ im IFrame? Wie gesagt, ist "NUM" keine Zahl.

      wie gesagt: nichts als eine simple ziffer, deren wert sich im lauf der zeit aber ändert. - danke für die präzisierung. mit freundlichem gruß - wadi

      viele Grüße

      Axel

      1. Hallo,

        Was _genau_ steht _wo_ im IFrame? Wie gesagt, ist "NUM" keine Zahl.
        wie gesagt: nichts als eine simple ziffer, deren wert sich im lauf der zeit aber ändert.

        Das ist immer noch sehr schwammig. Ein IFrame beinhaltet ein komplettes Dokument. Dieses hat Elemente, mindestens ein BODY-Element. Steht die Zahl direkt in diesem? Oder gibt es da eine komplette HTML-Elementstruktur?

        Im jedem Fall bekommst Du, vom einbindenden Dokument aus, den IFrame mit:

        var myIFrame = frames['framename'];

        Das Dokument darin bekommst Du mit:

        var myDocument = myIFrame.document;

        Auf Elemente in diesem Dokument kannst Du mit unterschiedichen Methoden zugreifen. Mit welchen, hängt davon ab, wo genau Deine Zahl steht.

        Allerdings, wenn ich mir das Ausgangsposting nochmal ansehe, wirst Du wohl an der same origin policy scheitern, weil das Dokument im IFrame nicht von Deiner Domain generiert wird. Dann ist der Zugriff mit JavaScript aus Sicherheitsgründen nicht erlaubt.

        viele Grüße

        Axel

        1. Hallo,

          Was _genau_ steht _wo_ im IFrame? Wie gesagt, ist "NUM" keine Zahl.
          wie gesagt: nichts als eine simple ziffer, deren wert sich im lauf der zeit aber ändert.
          Das ist immer noch sehr schwammig. Ein IFrame beinhaltet ein komplettes Dokument. Dieses hat Elemente, mindestens ein BODY-Element. Steht die Zahl direkt in diesem? Oder gibt es da eine komplette HTML-Elementstruktur?

          Im jedem Fall bekommst Du, vom einbindenden Dokument aus, den IFrame mit:

          var myIFrame = frames['framename'];

          Das Dokument darin bekommst Du mit:

          var myDocument = myIFrame.document;

          Auf Elemente in diesem Dokument kannst Du mit unterschiedichen Methoden zugreifen. Mit welchen, hängt davon ab, wo genau Deine Zahl steht.

          Allerdings, wenn ich mir das Ausgangsposting nochmal ansehe, wirst Du wohl an der same origin policy scheitern, weil das Dokument im IFrame nicht von Deiner Domain generiert wird. Dann ist der Zugriff mit JavaScript aus Sicherheitsgründen nicht erlaubt.

          viele Grüße

          Axel

          #################################################################

          vielen dank erst mal für Deine geduld. und ich hatte blauäugig an was einfaches gedacht. - jene "ziffer taucht in der html-seitenansicht auf. aber Du fragst zu recht nach dem script. deshalb jetzt ganz explizit:

          ...
          <iframe frameborder="no" scrolling="no" src="http://amigos.de/cgi-bin/counter.pl?font=1&len=3&textmode=1&id=zzz"></iframe>

          [diese counterabfrage liefert einen zahlenwert, der weiterverwendet werden soll in der form:]

          <script language="JavaScript">
          if (zahlenwert > 500) {anweisung ...}
          </script>
          ...

          immer noch schwammig? herzlich wadi

          1. Hallo,

            <iframe frameborder="no" scrolling="no" src="http://amigos.de/cgi-bin/counter.pl?font=1&len=3&textmode=1&id=zzz"></iframe>
            [diese counterabfrage liefert einen zahlenwert, der weiterverwendet werden soll in der form:]
            <script language="JavaScript">
            if (zahlenwert > 500) {anweisung ...}
            </script>
            ...
            immer noch schwammig?

            Nein, aber es wird nicht funktionieren. Es würde nur funktionieren, wenn die Seite, welche den IFrame einbindet, auch auf dem Host unter der URL http://amigos.de/ abgelegt ist. Alles andere verhindert die same origin poicy.

            Beispiel:

              
            <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"  
                    "http://www.w3.org/TR/html4/strict.dtd">  
            <html>  
            <head>  
            <title>Zugriff auf IFrame</title>  
            <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">  
            <script type="text/javascript">  
            <!--  
            function getIFrame() {  
             var myIFrame = frames["IFrame"];  
             try {  
              var myIFrameDocument = myIFrame.document;  
              var myIFrameInnerHTML = myIFrameDocument.body.innerHTML;  
              alert(myIFrameInnerHTML);  
             } catch(e) {  
              alert(e.description);  
             }  
            }  
            //-->  
            </script>  
            </head>  
            <body>  
            <iframe name="IFrame" frameborder="no" scrolling="no" src="test.html"></iframe>  
            <button onclick="getIFrame();">getIFrame</button>  
            </body>  
            </html>  
            
            

            funktioniert, weil test.html auf dem selben Host liegt, wie die Ressource, welche den IFrame einbindet. Wird aber im IFrame eine Ressource angezeigt, die nicht von diesem Host ausgeliefert wird, dann darf mit JavaScript nicht darauf zugegriffen werden.

            Grund für diese Einschränkung ist Folgende:
            Gäbe es diese Einschränkung nicht, könnte man z.B. die Seite einer Bank in einem Frame der eigenen Präsenz einbinden und dann beliebig mit JavaScript manipulieren. Beispielsweise die Daten von Anmeldeformularen umleiten. Das nennt sich phising, ist kriminell und wird trotzdem gemacht. Allerdings wäre es ohne diese JavaScript-Einschränkung noch einfacher zu realisieren.

            viele Grüße

            Axel

            1. immer noch schwammig?

              Nein, aber es wird nicht funktionieren. Es würde nur funktionieren, wenn die Seite, welche den IFrame einbindet, auch auf dem Host unter der URL http://amigos.de/ abgelegt ist. Alles andere verhindert die same origin poicy.

              Beispiel:

              ...

              funktioniert, weil test.html auf dem selben Host liegt, wie die Ressource, welche den IFrame einbindet. Wird aber im IFrame eine Ressource angezeigt, die nicht von diesem Host ausgeliefert wird, dann darf mit JavaScript nicht darauf zugegriffen werden.

              Grund für diese Einschränkung ist Folgende:
              Gäbe es diese Einschränkung nicht, könnte man z.B. die Seite einer Bank in einem Frame der eigenen Präsenz einbinden und dann beliebig mit JavaScript manipulieren. Beispielsweise die Daten von Anmeldeformularen umleiten. Das nennt sich phising, ist kriminell und wird trotzdem gemacht. Allerdings wäre es ohne diese JavaScript-Einschränkung noch einfacher zu realisieren.

              ###################################################################
              hallo axel

              oh, das habe ich nicht entfernt vermutet! bei einem andern zähler (andy hoppe)kann man direkt die counter-variable 'count' beim server abfragen und weiterverwenden. nur, für meine speziellen zwecke wäre der amigos-zähler praktischer (da beliebiebige user-ids). vielleicht ergibt sich die access-einschränkung hier aus der verwendung von IFRAME, aber das ist die einzige mir bekannte abfragemöglichkeit. - schon merkwürdig, dass mann den zahlenwert auf dem bildschirm hat und nur manuell weiterverwenden kann. ich habe selbst einen server (omnisecure) zu testzwecken installiert. vielleicht lässt sich der vorhandene zahlenwert in ein php-script übertragen und abfragen ...

              für Deine große hilfsbereitschaft, kompetente auskunft und vor allem auch geduld möchte ich Dir herzlich danken!