Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Link einer Seite anklicken (https://www.delphipraxis.net/61068-link-einer-seite-anklicken.html)

Moyyer 16. Jan 2006 18:01


Link einer Seite anklicken
 
Hallo

Ist es möglich einen Link "virtuell" anzuklicken? Wenn ja wär ich euch sehr dankbar, wenn ihr mir sagt wie, den ich bin am verzweifeln.
In meinem Fall handelt es sich um 2 Frames. Es ist kein Problem, die Links zu finden, nur weiß ich nicht, wie ich sie "anklicke", damit die Frames erhalten bleiben.

MfG Moyyer

marabu 16. Jan 2006 18:25

Re: Link einer Seite anklicken
 
Hallo,

zum Anklicken verwendet du die Methode Click() des anchors, aber ob die frames dabei erhalten bleiben oder nicht, darüber hast du so keine Kontrolle. Willst du die Kontrolle behalten, dann musst du dir den Wert des href-Attributes besorgen und das Ziel selbst zu bestimmen.

Grüße vom marabu

Moyyer 16. Jan 2006 19:04

Re: Link einer Seite anklicken
 
Hallo marabu

Kannst du mal ein kleines Beispiel schreiben, hab keine Ahnung, wie ich den Anchor anklicke. (Geht auch erstmal ohne Frames)

marabu 16. Jan 2006 19:58

Re: Link einer Seite anklicken
 
Okay, nimm meinen Code, den ich dir in deinen anderen thread gegeben habe, diesmal mit late binding:

Delphi-Quellcode:
// ...
  ShowMessage(win.document.links(0).click);
Das sollte den ersten link im frame anklicken.

marabu

Moyyer 19. Jan 2006 17:02

Re: Link einer Seite anklicken
 
hallo.
sorry, das es so lange gedauert hat. war 2 tage nicht da.

dein code funktioniert leider nicht.

"links" besitzt leider kein "click"

Gibts noch eine andere möglichkeit???

mfg moyyer

marabu 19. Jan 2006 18:23

Re: Link einer Seite anklicken
 
Sorry, aber in meinem vorigen posting war ich wohl nicht ganz bei mir. Hier hast du Code, der funktioniert. Ich habe eine WebBrowser-Komponente auf eine Form gezogen und lade über ein Edit-Feld einen URL mit Frames.

Delphi-Quellcode:
// uses MSHTML;

procedure TWebForm.LoadButtonClick(Sender: TObject);
begin
  with WebBrowser do
    Navigate(Edit.Text);
end;

procedure ShowLinks(ec: IHTMLElementCollection);
var
  v: OleVariant;
  u: IUnknown;
  anchor: IHTMLAnchorElement;
  s: TStrings;
begin
  s := TStringList.Create;
  v := 0;
  while v < ec.length do
  begin
    u := ec.item(v, null);
    if u.QueryInterface(IHTMLAnchorElement, anchor) = 0 then
      s.Add(anchor.href);
    v := v + 1;
// so kommst du übrigens an die Click-Methode:
// with anchor as IHTMLElement do click;
  end;
  ShowMessage(s.Text);
  s.Free;
end;

procedure ShowFrames(fc: IHTMLFramesCollection2);
var
  v: OleVariant;
  win: IHTMLWindow2;
  u: IUnknown;
begin
  v := 0;
  while v < fc.length do
  begin
    u := fc.item(v);
    if u.QueryInterface(IHTMLWindow2, win) = 0 then
      ShowLinks(win.document.links);
    v := v + 1;
  end;
end;

procedure TWebForm.DemoButtonClick(Sender: TObject);
var
  doc: IHTMLDocument2;
begin
  doc := WebBrowser.Document as IHTMLDocument2;
  ShowFrames(doc.frames);
end;
Viel Spaß damit.

marabu

Moyyer 19. Jan 2006 22:29

Re: Link einer Seite anklicken
 
hallo marabu

dein code hat soweit (auf'm Localhost) funktioniert. Bei praktischer Anwendung im Internet kam
bei "ShowLinks" ein "Zugriff Verweigert".

Der Link, auf dem ich klicken will, befindet sich auf einer frameseite (übrigens toll, das du frames gleich mit eingebunden hast.)
Gibt es eine möglichkeit diesen "Zugriff verweigert" zu umgehen oder woran liegt es?

Mfg Moyyer

marabu 20. Jan 2006 11:57

Re: Link einer Seite anklicken
 
Hallo Moyyer,

kann es sein, dass du IFrames und Frames in einen Topf geworfen hast? Damit es dabei keine Probleme gibt musst du den Code in DemoButtonClick so anpassen:

Delphi-Quellcode:
procedure TWebForm.DemoButtonClick(Sender: TObject);
var
  doc: IHTMLDocument2;
  fs: IHTMLFrameSetElement;
begin
  doc := WebBrowser.Document as IHTMLDocument2;
  if Succeeded(doc.body.QueryInterface(IHTMLFrameSetElement, fs))
    then ShowFrames(doc.frames)
    else ShowLinks(doc.links);
end;
Grüße vom marabu

Moyyer 20. Jan 2006 13:52

Re: Link einer Seite anklicken
 
Hi Marabu

Der Fehler kommt leider immernoch :cry: . Immnoch bei Showlinks
Auf der "Main" Frameseite sind nochmal IFrames eingebettet. wusste nicht, das es da einen unterschied gibt.

Der Link öffnet ein javascript, aber ich denke, daran kann es nicht liegen oder?
(Javascript ist aktiviert)

Falls du keine Idee mehr hast, kann ich dir ja mal den Seitenquellcode schicken.

MFG
Moyyer

marabu 20. Jan 2006 16:02

Re: Link einer Seite anklicken
 
Ich hätte dich jetzt um den URL gebeten, da ich ohne ein greifbares Beispiel nur noch im Nebel stochern kann.

marabu


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:47 Uhr.
Seite 1 von 2  1 2      

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