Einzelnen Beitrag anzeigen

Benutzerbild von Jomo
Jomo

Registriert seit: 10. Feb 2004
Ort: Hamburg
5 Beiträge
 
Delphi 5 Standard
 
#3

Re: [TWebbrowser] Frameset laden

  Alt 11. Feb 2004, 10:38
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

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;
  Mit Zitat antworten Zitat