javatis: kompetten quelltext aus frame auslesen und in variable speichern

Habe folgendes Problem.... ich brauche aus dem quelltext einer anderen seite diverse daten die ich aber nicht mit

getElementsByTagName

oder ähnlichem rausfiltern kann das heisst ich muss einmal den kompletten quelltext der frameseite (ca 25.000 zeichen) in einer variable als string speichern.... wi bekomme ich nnun diesen kompletten quelltext in den string rein?

var quellstring = frame[1].document;

funzt schonmal nicht

kann mir da einer helfen?

  1. Hallo erstmal!

    ich brauche aus dem quelltext einer anderen seite diverse daten die ich aber nicht mit

    getElementsByTagName

    Warum kannst Du damit zugreifen? (getElement[s]~ ist die einfachste Möglichkeit)

    oder ähnlichem rausfiltern kann das heisst ich muss einmal den kompletten quelltext der frameseite (ca 25.000 zeichen) in einer variable als string speichern.... wi bekomme ich nnun diesen kompletten quelltext in den string rein?

    Sei bitte so lieb und schildere (notfalls zu viel, als [wie eben] zu wenig) alles! Sicher wird es eine Möglichkeit geben, solang der Zugriff auf das auszulesende Dokument nicht ausgeschlossen wurde. Aber die Informationen, die Du gibst sind zu gering, um Dir pauschal eine Lösung angedeien zu lassen. Poste daher bitte auch einen Verweis zu Deinem Script, um sich das, so es zu groß ist, dennoch mal durchzusehen.

    Danke!

    Gruß aus Berlin!
    eddi

    --
    Manchmal trifft es einen doch ganz unverhofft t86591:
    > '..."Vorläufig abgebrochen" ist ungefähr so sinnvoll formuliert, wie "einstweilig erschossen" oder "temporär verbrannt"...'
    Ich danke Sven für diese Erkenntnis - Gott, was habe ich gelacht ;)
    1. Hello,

      das bringt mich auf eine Zusatzfrage:

      gibt es für PHP eine Klasse, mit deren Hilfe man ausgelesene Ressourcen auf dem Server ähnlich wie mit JavaScript im Browser zerlegen kann?

      Harzliche Grüße aus http://www.annerschbarrich.de

      Tom

      --
      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
      Nur selber lernen macht schlau
      1. Hello,

        das bringt mich auf eine Zusatzfrage:

        gibt es für PHP eine Klasse, mit deren Hilfe man ausgelesene Ressourcen auf dem Server ähnlich wie mit JavaScript im Browser zerlegen kann?

        Noch ;) nicht.

        URL
          - mit parse\_url() aufplitten      - "path" mit explode() in ein Datenfeld streuen
                - dem Server verfügbar machen (Session)            - Sourcen jeweils mit explode() in ein Datenfeld streuen
                      - Position in (array) "path" ermittel                  (gegebenenfalls "path" erweitern)                  - die Indizes joinen
                            - mit dem array (aus der Session) komplettieren                        - stream ran

        Vom Prinzip her braucht es nicht mehr, um wieder einen Proxy mehr ins Netz zu stellen, um Profile zu erstellen ;)

        Gruß aus Berlin!
        eddi

        --
        Manchmal trifft es einen doch ganz unverhofft t86591:
        > '..."Vorläufig abgebrochen" ist ungefähr so sinnvoll formuliert, wie "einstweilig erschossen" oder "temporär verbrannt"...'
        Ich danke Sven für diese Erkenntnis - Gott, was habe ich gelacht ;)
      2. Hi,

        gibt es für PHP eine Klasse, mit deren Hilfe man ausgelesene Ressourcen auf dem Server ähnlich wie mit JavaScript im Browser zerlegen kann?

        Falls Du den Quellcode bzw. DOM meinst: Natürlich mittels XML-Parser.

        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. Hello,

          gibt es für PHP eine Klasse, mit deren Hilfe man ausgelesene Ressourcen auf dem Server ähnlich wie mit JavaScript im Browser zerlegen kann?

          Falls Du den Quellcode bzw. DOM meinst: Natürlich mittels XML-Parser.

          Ja, meinte ich. Nicht das Rendering der Seite.

          Sind das diese Funktionen?

          [54] => xml_error_string
                      [57] => xml_get_current_byte_index
                      [56] => xml_get_current_column_number
                      [55] => xml_get_current_line_number
                      [53] => xml_get_error_code
                      [51] => xml_parse
                      [52] => xml_parse_into_struct
                      [39] => xml_parser_create
                      [40] => xml_parser_create_ns
                      [58] => xml_parser_free
                      [60] => xml_parser_get_option
                      [59] => xml_parser_set_option
                      [43] => xml_set_character_data_handler
                      [45] => xml_set_default_handler
                      [42] => xml_set_element_handler
                      [50] => xml_set_end_namespace_decl_handler
                      [48] => xml_set_external_entity_ref_handler
                      [47] => xml_set_notation_decl_handler
                      [41] => xml_set_object
                      [44] => xml_set_processing_instruction_handler
                      [49] => xml_set_start_namespace_decl_handler
                      [46] => xml_set_unparsed_entity_decl_handler

          Kann ich damit auch Nodes und Elements in den Baum einbauen und Attribute verändern? Ich überschaus jetzt nicht so auf die Schnelle, aber dann hätte ich gleich mal wieder was fürn Feierabend ;-)

          Harzliche Grüße aus http://www.annerschbarrich.de

          Tom

          --
          Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
          Nur selber lernen macht schlau
          1. Hi,

            Sind das diese Funktionen?

            Jep.

            Kann ich damit auch Nodes und Elements in den Baum einbauen und Attribute verändern?

            Nein, schreiben mußt Du direkt in den Code rein. Aber damit kannst Du XML-Dokumente parsen und *selbst* eine Baumstruktur (als Array) herstellen. (Oder Du ergänzt/änderst dieses Array und wandelst es dann wieder zurück in einen Quellcode. ;-)) Das ist weniger kompliziert, als es sich jetzt vielleicht anhört (allerdings auch noch ein relativ neues PHP-Thema: da gibt es nicht viel fertige Sourcen - und (erst) im noch wenig verbreiteten PHP 5 ist ja eine umfangreichere XML-Verarbeitung schon drin ...)

            Ich habe damit allerdings bislang nur XML-Dokumente geparst. Es könnte sein (bzw. ist sehr wahrscheinlich ;-)), daß das mit HTML-Dokumenten überhaupt nicht klappt (läge nahe, ist ja ein XML-Parser ;-)). Dann müßte man halt vorher das HTML-Dokument zumindest intern nach XHTML wandeln (also z.B. mittels RegExp <br> nach <br /> wandeln), was ja auch überschaubar ist.

            Ich überschaus jetzt nicht so auf die Schnelle, aber dann hätte ich gleich mal wieder was fürn Feierabend ;-)

            Da sage ich mal lieber nichts zu, sonst gerate ich noch ins Schwärmen ...

            Gruß, Cybaer (seit jeher großer SGML- bzw. XML-Fan ;-)))

            --
            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"!
    2. Hallo eddy:)

      Hallo erstmal!

      ich brauche aus dem quelltext einer anderen seite diverse daten die ich aber nicht mit

      getElementsByTagName

      Warum kannst Du damit zugreifen? (getElement[s]~ ist die einfachste Möglichkeit)

      Nun das Problem ist folgendes der Tagname den ich ansprechen könnte wäre:

      objekt = opener.f1.document.getElementsByTagName('SCRIPT LANGUAGE="JavaScript"')[2]
      ;

      das ergebnis ist jedoch leider "Undefined"!(f1 ist der name des fensters das vom opener der angesprochenen seite geöffnet wurde (die adressierung des fensters ist vollkommen korekt!, die skann ich mit bestimmtheit sagen!))

      um es genau auszudrücken, hier ein teil des quelltextes des html dokumentes:
      _____________.......
                      <SCRIPT LANGUAGE="JavaScript">
                      var temp = '<EMBED type="application/x-nppgwrap" ';
                      temp += ' CONTROLCLASSID="F58E1CEF-A068-4c15-BA5E-587CAF3EE8C6" ';
                      temp += ' NPCODEBASE="http://chat.msn.com/bin/nppgwrap.cab#Version=9,0,0,1" ';
                      temp += ' CONTROLCODEBASE="http://chat.msn.com/bin/msnchat45.cab#Version=9,02,0310,2401" ';
                      temp += ' CONTROLNAME="MSNChat" ';
                      temp += ' WIDTH=' + control_width + ' HEIGHT=' + control_height + ' ';
                      temp += ' MSNREGCookie="rwcb1f2PrFCWttRoLBGvLLIlbz8SX3qyyyIsI8d4Cl7TuFyEIOFdPa9Xu1Rh2zapCSMLMI945Bcfp0TvDn6RdQ^d^p8mYnx*w7uccZabJFSIU*5WUmAtnn4MToTXPE^fOfiwy5xijwshqRepjhP*eEl6f*AMUVP*NWOiQnqTk2KnrgWgyoGmO16vtyFFb1uE5eVKIdXGlEaCvTjfH6s5fw@@" ';
                      temp += ' PassportTicket="5F5p1NO!dDZMQa3AyEay1mNVjfB1QXTVeBnNULHRPRooYHmMCWIPKrgtNVVZpuNr3fWsXuLUSo9krGAeufkGHv6w$$" ';
                      temp += ' PassportProfile="5ql2v!HxnFjVMFpG45fKlz7ct9gN4NYeWuybXh4zcu5egSgk8GWdeCPocx0Ri4d1RTgHcNaRmTUUIsssRb4PSjLsFNF0BKUQi6GDQrM7aWZM0MuhZncX9DAN7hcXfBgjuWC5EVAPeWdfRgygk6hx5B*ZgCKgO9yBYYnQFP3LYMOCvhEpp0FK1c3A$$" ';
                      temp += ' RoomName="G_Herzflimmern" ';
                      temp += ' HexRoomName="' + EncodeHexName("G_Herzflimmern") + '" ';
                      temp += ' Server="207.68.167.251" ';
                      temp += ' BackColor="&hFFFFFF" ';
                      temp += ' Feature="12" ';
                      temp += ' BaseURL="http://de.msnusers.com/Herzflimmern" ';
                      temp += ' URLBack="" ';
                      temp += ' CreateRoom="" ';
                      temp += ' ChatHome="" ';
                      temp += ' Category="UL" ';
                      temp += ' ChatMode="2" ';
                      temp += ' AuditMessage = "Hinweis: MSN hat festgestellt, dass Sie an dieser Chatsitzung mit der IP-Adresse <B>%1</B> teilnehmen." ';
                      temp += ' UserRole = "5AAAAAAlAEOHaegNrZQbYzOSNQ*e2em5qj7XRX0ZUeVYWiuWm3L0bNujhAjLZpz41QjETdVjSUX!zjI!xbckG2WSwreSTRfEj9F9bbYM!lVvoAzD45kDYGWCte1GaN17j!K42DPZgtoHE$" ';
                      temp += ' ResDLL="http://chat.msn.com/bin/msnchat40de-de.cab#Version=9,02,0310,2401" ';
                      temp += '>';
                      document.write(temp);
                  </SCRIPT>
      ........_____________________

      was ich daraus nun genau bräuchte wären genau 5 angaben undzwar die werte in den "" für folgendes:
      ----
      MSNREGCookie
      PassportTicket
      PassportProfile
      RoomName
      UserRole
      ----

      und spätestens darauf kann ich dann schon nichtmehr mit

      objekt = objekt.getElementsByTagName.....

      zugreifen da es schlicht gesehen weder tags noch namen noch id´s sind!

      daher wollte ich den kompletten quelltext auslesen da ich im weiteren verlauf noch weitere werte bräuchte die hier aber erstmal nicht wichtig sind, es wäre nur schön wenn ich den kompletten quelltext der seite in einem string speichern könnte so das ich diesen string an flash weitergeben kann um ihn dort mittels der anweisung .split per actionscript zu zerlegen(so war meine idee).

      Sei bitte so lieb und schildere (notfalls zu viel, als [wie eben] zu wenig) alles! Sicher wird es eine Möglichkeit geben, solang der Zugriff auf das auszulesende Dokument nicht ausgeschlossen wurde. ...

      da wie gesagt das ergebnis bei objekt schon undefined ist... war auch weitergehende js syntax unbedeutend:

      ----

      var pos1=objekt.indexOf("MSNREGCookie");
      var str1=objekt.substring(pos1, 10000);
      var pos1=str1.indexOf('"');
      pos1=pos1+1;
      var str1=objekt.substring(pos1, 10000);
      var pos2=str1.indexOf('"');
      var odincookie=str1.substring(pos1, pos2);
      alert(odincookie);
      .....
      ----

      das alert wird schon garnichtmehr ausgeführt da ich versuche auf etwas zuzugreifen was "undefined" ist.

      Ich hoffe ich habe nun genaue informationen gegeben und mir kann einer weiterhelfen:)

      Gruss aus Aachen

      by Sascha

      1. Hallo javatis,

        ich brauche aus dem quelltext einer anderen seite diverse daten die ich aber nicht mit

        getElementsByTagName

        Warum kannst Du damit

        [nicht]

        zugreifen? (getElement[s]~ ist die einfachste Möglichkeit)

        Nun das Problem ist folgendes der Tagname den ich ansprechen könnte wäre:

        objekt = opener.f1.document.getElementsByTagName('SCRIPT LANGUAGE="JavaScript"')[2]

        Dieses Element wird es so nicht geben. opener.f1.document.getElementsByTagName('SCRIPT')[2] sollte dagen ansprechbar sein.
        mit getElement~ greifst Du auf ein Element des Dokumentenbaums zu; "language" ist dabei nur ein Attribut, was an sich nicht einmal gibt http://www.w3.org/TR/html4/interact/scripts.html#h-18.2.1

        das ergebnis ist jedoch leider "Undefined"!(f1 ist der name des fensters das vom opener der angesprochenen seite geöffnet wurde (die adressierung des fensters ist vollkommen korekt!, die skann ich mit bestimmtheit sagen!))

        [...]
        was ich daraus nun genau bräuchte wären genau 5 angaben undzwar die werte in den "" für folgendes:

        MSNREGCookie
        PassportTicket
        PassportProfile
        RoomName
        UserRole

        Da nach der Ausführung von document.write(temp) das "Element" EMBED im Dokumentenbaum ist, kannst Du es direkt über getElement~ ansprechen.
        EMBED ist allerdings auch kein standartisiertes Element http://de.selfhtml.org/html/multimedia/netscape.htm#definieren, daher kann es auch schlicht weg sein, daß rein gar nichts geschehen wird :\

        Nimm stattdessen applet!

        und spätestens darauf kann ich dann schon nichtmehr mit

        objekt = objekt.getElementsByTagName.....

        zugreifen da es schlicht gesehen weder tags noch namen noch id´s sind!

        daher wollte ich den kompletten quelltext auslesen da ich im weiteren verlauf noch weitere werte bräuchte die hier aber erstmal nicht wichtig sind, es wäre nur schön wenn ich den kompletten quelltext der seite in einem string speichern könnte so das ich diesen string an flash weitergeben kann um ihn dort mittels der anweisung .split per actionscript zu zerlegen(so war meine idee).

        Das wäre auch denkbar http://aktuell.de.selfhtml.org/artikel/javascript/file-open/index.htm

        Gruß aus Berlin!
        eddi

        --
        Manchmal trifft es einen doch ganz unverhofft t86591:
        > '..."Vorläufig abgebrochen" ist ungefähr so sinnvoll formuliert, wie "einstweilig erschossen" oder "temporär verbrannt"...'
        Ich danke Sven für diese Erkenntnis - Gott, was habe ich gelacht ;)
        1. Hallo, javatis!

          für den IE unter windows geht das so:
          http://forum.de.selfhtml.org/archiv/2004/3/75543/#m436758
          für netscape findest du bei http://www.bookmarklets.com unter "Design" ein bookmarklet "Edit HTML of Page", das du allerdings erst noch (z.b. nach meiner vorlage) framefähig machen musst.

          freundl. Grüsse aus Berlin, Raik

          1. Hallo, javatis!

            für den IE unter windows geht das so:
            http://forum.de.selfhtml.org/archiv/2004/3/75543/#m436758
            für netscape findest du bei http://www.bookmarklets.com unter "Design" ein bookmarklet "Edit HTML of Page", das du allerdings erst noch (z.b. nach meiner vorlage) framefähig machen musst.

            freundl. Grüsse aus Berlin, Raik

            Hallo nochmal Xarax und danke bei der auflösung nach dem tagnamen script erhalte ich nun wenigstens was zurück aber leider funktioniert weder "emdbed" noch "applet".... beides ergibt undefined

            Hallo auch Raik ich hab mir das mal durchgelesen und mal etwas rumgestest mit der windows (fendster) bauart die ich bisher habe ohne es erstmal auf frames zu beziehen naja bin jetzt wieder seit 2-3 stunden dran mit dem was ich vorher schon getstet habe (dauert immer etwas da ich es ja nur online testen kann...)

            folgendes problem bleibt:

            opener.f1.document.getElementsByTagName("SCRIPT")[8];
            ergibt:
            [object HTMLScriptElement]

            opener.f1.document.getElementsByTagName("SCRIPT")[8].outerHTML;
            ergibt:
            undefined

            bin ich echt so blöd????

            Gruss an euch beide und echten dank

            Sascha

            1. Hallo, javatis!

              Hallo nochmal Xarax und danke bei der auflösung nach dem tagnamen script erhalte ich nun wenigstens was zurück aber leider funktioniert weder "emdbed" noch "applet".... beides ergibt undefined

              Das war mein Fehler! Elemente, die per document.write() ind das Dokument eingefügt werden, können leider nicht über getElement~ angesprochen werden :\

              Gruß aus Berlin!
              eddi

              --
              Manchmal trifft es einen doch ganz unverhofft t86591:
              > '..."Vorläufig abgebrochen" ist ungefähr so sinnvoll formuliert, wie "einstweilig erschossen" oder "temporär verbrannt"...'
              Ich danke Sven für diese Erkenntnis - Gott, was habe ich gelacht ;)
              1. Hallo,

                Hallo nochmal Xarax und danke bei der auflösung nach dem tagnamen script erhalte ich nun wenigstens was zurück aber leider funktioniert weder "emdbed" noch "applet".... beides ergibt undefined

                Das war mein Fehler! Elemente, die per document.write() ind das Dokument eingefügt werden, können leider nicht über getElement~ angesprochen werden :\

                Das sollte hier nicht relevant sein. Der Inhalt des script-Elements ist zunächst einmal Text, also ein Textknoten, der am script-Elementknoten hängt. Dass dies JavaScript-Code mit HTML-Code ist, der dann durch document.write() weitere Knoten erzeugt, die nach dem script-Knoten auftauchen, braucht uns nicht zu stören. Es reicht, diesen Textknoten auszulesen.

                Mathias

                1. die nach dem script-Knoten auftauchen, braucht uns nicht zu stören. Es reicht, diesen Textknoten auszulesen.

                  Mathias

                  Hallo Mathias das dachte ich mir eigentlich auch und habe es dann mal mit

                  objekt.nodeValue

                  versucht wobei "objekt" gleich dem vorher ausgelesenen script element ist... ich habe die ausgabe dann in ein textarea realisiert welches jedoch leerbleibt (bzw wieder gelöscht wird, weil ich vorher einen normalen text mit formname.areaname.value="text" reingeschrieben habe)

                  also langsam verzweifle ich hat denn keiner eine idee oder gibts wirklich nirgendwo schon was fertiges was man umbauen kann weil ich bin mir eientlich ziemlich sicher das irgendjemand sonmal sowas gemacht hat in JS

                  gruss sascha

            2. Hallo,

              opener.f1.document.getElementsByTagName("SCRIPT")[8];
              ergibt:
              [object HTMLScriptElement]

              opener.f1.document.getElementsByTagName("SCRIPT")[8].outerHTML;
              ergibt:
              undefined

              Hast du es einmal mit .innerHTML versucht? Oder .firstChild.nodeValue?

              Mathias

            3. Hi,

              opener.f1.document.getElementsByTagName("SCRIPT")[8].outerHTML;
              ergibt:
              undefined

              Script-Elemente haben eine Eigenschaft "text", die man lesen und ändern kann, siehe http://de.selfhtml.org/javascript/objekte/htmlelemente.htm#script.

              also:
              alert(opener.f1.document.getElementsByTagName("SCRIPT")[8].text);

              Grüße, Stefan

      2. Hi,

        Nun das Problem ist folgendes der Tagname den ich ansprechen könnte wäre:

        objekt = opener.f1.document.getElementsByTagName('SCRIPT LANGUAGE="JavaScript"')[2]

        Von genannten Fehlern mal abgesehen:

        Auch eine generierte HTML-Seite ist eine HTML-Seite! Sie läßt sich also mit

        opener.getElementsByTagName("html")[0].innerHTML;

        oder gar mit

        opener.documentElement.innerHTML;

        auslesen (statt opener halt ggf. die gewünschte Referenz eintragen).

        Gruß, Cybaer

        PS: Du mußt natürlich(und wie immer) durch entsprechende Abfragen dafür Sorge tragen, daß nur die Browser das so abfragen, die das auch beherrschen.

        --
        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"!