Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi [TWebbrowser] Frameset laden (https://www.delphipraxis.net/16109-%5Btwebbrowser%5D-frameset-laden.html)

Jomo 10. Feb 2004 14:35


[TWebbrowser] Frameset laden
 
Aloha,

ich habe ein kleines Problem! Und zwar habe ich eine Liste
von URLs,die ich in den TWebbrowser laden möchte:


http://cmore/browser/frameset.html
2
http://cmore/browser/verweise.html
links
http://cmore/browser/titel.html
rechts

Zur Erklärung:

Zeile 1: die URL, die in der Adresszeile angezeigt wird. (hier frameset.html)
Zeile 2: Die Anzahl Frames
Zeile 3: Frame(0) URL
Zeile 4: Frame(0) Name
Zeile 5: Frame(1) URL
Zeile 6: Frame(1) Name


Mein Progie macht das so: (oder auch nicht..)

Delphi-Quellcode:
 WebBrowser1.Navigate(URL aus Zeile 1);
 document := WebBrowser1.document as IHTMLDocument2;
 if (strtoint(Anzahl Frames) > 1) then
  for i:=0 to (strtoint(frame_anz)-1) do
   begin
    WebBrowser1.Navigate(FrameURL_i , flag , FrameName_i);
   end;
 end;

Das Problem dabei, er lädt die Datei "frameset.html" nicht,so das
die beiden anderen Navigate Anweisungen auch nicht funzen :cry:

Hat jemand einen Tip? Oder gar einen ganz anderen Ansatz?

Dave

PS: ich hatte auch noch eine andere Alternative, da habe ich aber
immer den Fehler "Member nicht gefunden" bekommen - sagt euch das etwas?

chris 10. Feb 2004 18:03

Re: [TWebbrowser] Frameset laden
 
hi,

so wie ich deinen code sehe sollte am ende der ausführung http://cmore/browser/titel.html im twebbrowser erscheinen, so hast du es programmiert.

wenn du das frameset laden willst brauchst du nur nach http://cmore/browser/frameset.html zu navigieren, die frames werden doch automatisch von frameset.html geladen.

ich verstehe nicht ganz was du vor hast - alle frames in windeseile durchladen?

[edit]mal ganz davon abgesehen das 'http://cmore/browser/...' nicht klappen kann[/edit]

Jomo 11. Feb 2004 09:38

Re: [TWebbrowser] Frameset laden
 
Moin,

okay eine kleineerläuterung hilft wohl ;)

Also es geht um ein Websurf-Protokoll-Tool.

Ein User surft mit dem TWebbrowser über eine beliebige Seite,
zum Beispiel www.Aldi.de. Im Hintergrund lasse ich einen Timer
mitlaufen, der alle 100 ms die Mauskoordinaten und die angezeigte
Seite,inklusive Frames und SubFrames und derren Subframes wegspeichert.


BSP eines Datensatzes ohne Frames:
----------------------------------------------------------
560 # mausX
370 # mausY
http://www.aldi.de/ #TWebbrowser.URL
0 # Anzahl Frames
----------------------------------------------------------


BSP eines Datensatzes mit Frames:
----------------------------------------------------------
1644 # mausX
255 # mausY
http://germany.aldi.com/cms/ #TWebbrowser.URL
5 # Anzahl Frames
http://germany.aldi.com/cms/frameset/blank.html #Frame 1
top # FrameName 1
0 # Anzahl Subframes in Frame 1
http://germany.aldi.com/cms/frameset/blank_1.html # Frame 2
left
0
http://germany.aldi.com/cms/home.html # Frame 3
content
0
http://germany.aldi.com/cms/frameset/blank_3.html # Frame 4
right
0
http://germany.aldi.com/cms/frameset/blank_2.html # Frame 5
bottom
0
----------------------------------------------------------

Das Wegspeichern ist easy-going 8)

Dann kommt der eigentliche Spass, um zu sehen wo lang er gesurft ist,
brauche ich halt das Tool. Ich bastel mir einen Form mit TWebbrowser
und lese alle 100ms die einen Datensatz ein und mache dann:

1. Setzen der Maus (easy)
2. Laden der TWebbrowser.URL, sofern nicht schon geladen
3. Laden der Frames (sofern nicht schon geladen)
4. Laden der Subframes (sofern nicht schon geladen)

Am Ende kann man sich halt das Surfverhalten des Users anschauen als
eine Art Video!

Geht auch gut, aber sobald Subframes im Spiel sind funzt es nicht mehr :wall:

Hast du eine bessere Lösung oder mache ich da strukturell einen Fehler?

Hier die Timer Routine (Auszug)

Delphi-Quellcode:

      doki,dok,flag,ole_index : OleVariant;


       Readln(F, x);
       Readln(F, y);
       Readln(F, doc);
       Readln(F, MouseState);
       Readln(F, frame_anz);

       //Cursor setzten

       //Webseite laden
       if (doc <> old_doc) then
       begin
          doki := doc;
          WebBrowser1.Navigate2(doki);
          old_doc := doc;
       end;

      document := WebBrowser1.document as IHTMLDocument2;

      if (strtoint(frame_anz) >= 1) then       // Seite hat Frames
       for i:=0 to (strtoint(frame_anz)-1) do
        begin
          ole_index := i;
          Readln(F, frame);
          Readln(F, Frame_name);
          Readln(F, frame_in_frame_anz);
         
          frame_n := frame_name;
          doki2   := frame;
         
          // Frames laden
          WebBrowser1.Navigate2(doki2,flag,frame_n);


          //SubFrames laden
          for j:=0 to (strtoint(frame_in_frame_anz)-1) do
           begin
               ole_index2 := j;
               Readln(F,frame_in_frame_url);
               Readln(F, Frame_name);
               frame_n := Frame_name;
               doki2    := frame_in_frame_url;
               WebBrowser1.Navigate2(doki2,flag,frame_n);
           end;
                   
        end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:47 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz