![]() |
Delphi Befehl als "Link" in TWebBrowser
Ich möchte einen Link aus Platzgründen nicht innerhalb der TWebbrowser Instanz aufrufen, sondern mit dem Default Browser des (Android) Smartphones. Aus Delphi heraus geht das über TMisc.Open.
Wie kann ich diesen Befehl im HTML Code von TWebBrowser "verlinken"? |
AW: Delphi Befehl als "Link" in TWebBrowser
Du möchtest also einem anderen Programm sagen, dass sie etwas von dir anzeigen (intent) soll, also deine URL (http) ?
![]() ![]() Wie man das aus dem internen Browser an einen externen gibt ... hmmmm ![]() irgendie kommt da das Gleiche raus. (auf Klick im internen Browser-Control reagieren und das dort im Delphi-Event dann machen) Hätte vielleicht gedacht, dass es sowas wie das Target am <URL> gibt, also wenn man ein neues Fenster öffnen lassen will. ![]() Aber bestimmt gibt es auch eine spezielle URI, welche an den Standard-Browser weitergereicht wird? (mir fällt nur grade kein passender Suchbegriff dafür ein, mit dem ich sowas finde) So wie das mailto: an das Standard-Mailprogramm. Mit http: ginge es zwar, aber das fängt ja dein interner Browser schon ab und macht es selber. :stupid: |
AW: Delphi Befehl als "Link" in TWebBrowser
Danke himitsu!
Die verschiedenen "target=" Optionen habe ich natürlich alle durchprobiert, damit funktioniert der Wechsel zum Default-Browser aber nicht. <a href="https://google.com" onclick="window.open('https://google.com', '_system'); return false;">Google</a> ...klappt ebenfalls nicht. Wie ich ein Intent statement in einem <a href= tag unterbringe, erschließt sich mir leider nicht:( |
AW: Delphi Befehl als "Link" in TWebBrowser
Ich weiß nicht, wie das unter Android läuft, bzw. ob der TWebBrowser da anders ist als unter Windows. Dort gibt es zumindest das Event OnBeforeNavigate2. Darin könnte man dann etwas machen wie:
Delphi-Quellcode:
Im HTML hat man dann HRefs, die mit DELPHICOMMAND:// anfangen statt https:// ...
if AnsiStartsText('DELPHICOMMAND://', string(URL)) then begin
Cancel := True; // "URL" ggf weiter parsen, Parameter auslesen, ... DoMyProcedure; // Oder was auch immer end; |
AW: Delphi Befehl als "Link" in TWebBrowser
OnShouldStartLoadWithRequest?
Allerdings: * diese Seite der DP im Windows geladen * der Selfhtml-Link öffnet sich extern im Edge (nicht in meinem Firefox :evil:) und das ohne ein Event (OnShouldStartLoadWithRequest sowie OnTap) * der Google-Link öffnet sich intern und löst OnShouldStartLoadWithRequest aus
Delphi-Quellcode:
Komisch ist aber, das immer nur der erste Klick auf einen Link funktioniert und das liegt nicht am Abort, denn auch der Link in den Edge geht nur einmal auf. :gruebel:
procedure TForm11.FormCreate(Sender: TObject);
begin WebBrowser1.Navigate('https://www.delphipraxis.net/211564-delphi-befehl-als-link-twebbrowser.html#post1512852'); end; procedure TForm11.WebBrowser1ShouldStartLoadWithRequest(ASender: TObject; const URL: string); begin Memo1.Lines.Add(URL); if Pos('google', URL) > 0 then Abort; // hier könntest du "deinen" Link behandeln, also sonstwas machen end; procedure TForm11.WebBrowser1Tap(Sender: TObject; const Point: TPointF); begin Memo1.Lines.Add('OnTap'); end; Und OnTap macht auch nichts. [add] Eigentlich ContainsText, aber hatte vorhin keine Lust hoch zu scrollen due SysUtils einzufügen. [test] ![]() [edit2] neee, himitsu: oder sonstwas geht auch ohne Event direkt an den Edge :shock: |
AW: Delphi Befehl als "Link" in TWebBrowser
OnBeforeNavigate gibt es in TWebBrowser unter Firemonkey nicht aber so hat es geklappt:
Code:
Danke Himitsu!
procedure TfSplash.WebBrowser1ShouldStartLoadWithRequest(ASender: TObject; const URL: string);
begin if Pos('widget', URL) > 0 then begin if FMain.CheckInternet('google.com') then TMisc.Open('https://play.google.com/store/apps/details.....') else showmessage('kein Internet!'); Abort; end end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:51 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