![]() |
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 |
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 |
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) |
Re: Link einer Seite anklicken
Okay, nimm meinen Code, den ich dir in deinen anderen
![]()
Delphi-Quellcode:
Das sollte den ersten link im frame anklicken.
// ...
ShowMessage(win.document.links(0).click); marabu |
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 |
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:
Viel Spaß damit.
// 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; marabu |
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 |
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:
Grüße vom marabu
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; |
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 |
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 00:08 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz