Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Twebbrower Link in Standard Browser anzeigen (https://www.delphipraxis.net/207425-twebbrower-link-standard-browser-anzeigen.html)

ashkan19 23. Mär 2021 07:37

Twebbrower Link in Standard Browser anzeigen
 
hallo allerseits,

ich habe folgendes Problem und zwar, ich habe auf meinem Programm einen Twebbrowser konstruiert welche ein Seite anzeigt, auf dem verschiedene Links drauf sind. nun, wenn man auf die Links klickt werden Sie in Internet Explorer angezeigt, ich möchte jedoch, dass die links in Standard Browser angezeigt werden. habt ihr Ideen, wie man das anstellen konnte. Ich habe bereits daran gedacht die Shellexecute Funktion beim window2 Ereignis vom Twebbrowser auszuführen, nur die Fragen bleibt, wie man die URL von dem angeklickten Link heraus bekommt?

himitsu 23. Mär 2021 08:19

AW: Twebbrower Link in Standard Browser anzeigen
 
Im HTML <A> kannst doch angeben, wo der Link aufgehen soll. :angle2:

Oder im OnBeforeNavigate den Klick abfangen und selbst öffnen.


Nur paar Links?
Delphi-Referenz durchsuchenTLinkLabel

ashkan19 23. Mär 2021 08:27

AW: Twebbrower Link in Standard Browser anzeigen
 
Zitat:

Zitat von himitsu (Beitrag 1485815)
Im HTML <A> kannst doch angeben, wo der Link aufgehen soll. :angle2:

Oder im OnBeforeNavigate den Klick abfangen und selbst öffnen.
[/OH]

würdest du mir ein konkretes Beispiel schreiben? das überschreitet leider meine Programmierer Kenntnisse :pale:

himitsu 23. Mär 2021 08:31

AW: Twebbrower Link in Standard Browser anzeigen
 
https://wiki.selfhtml.org/wiki/HTML/Elemente/a
https://wiki.selfhtml.org/wiki/HTML/Attribute/target

Der schöne Günther 23. Mär 2021 08:35

AW: Twebbrower Link in Standard Browser anzeigen
 
Also wenn das so einfach wäre, dann würde das doch auch Embarcadero selbst können, oder? Selbst im RAD Studio 10.4.2 gehen die Youtube-Links immer noch im Internet Explorer auf...

ashkan19 23. Mär 2021 08:38

AW: Twebbrower Link in Standard Browser anzeigen
 
Zitat:

Zitat von Der schöne Günther (Beitrag 1485818)
Also wenn das so einfach wäre, dann würde das doch auch Embarcadero selbst können, oder? Selbst im RAD Studio 10.4.2 gehen die Youtube-Links immer noch im Internet Explorer auf...

Da hat ja der gute Embarcadero enorm versagt mit seinem Twebbrowser

Delphi.Narium 23. Mär 2021 09:20

AW: Twebbrower Link in Standard Browser anzeigen
 
Zitat:

Zitat von ashkan19 (Beitrag 1485819)
Zitat:

Zitat von Der schöne Günther (Beitrag 1485818)
Also wenn das so einfach wäre, dann würde das doch auch Embarcadero selbst können, oder? Selbst im RAD Studio 10.4.2 gehen die Youtube-Links immer noch im Internet Explorer auf...

Da hat ja der gute Embarcadero enorm versagt mit seinem Twebbrowser

Wieso? TWebBrowser ist eine Kapselung des Internetexplorers. Warum sollte der Internetexplorer einen in ihm geklickten Link in einem anderen Browser öffnen?
Wär käme z. B. auf die Idee, dass ein im FireFox geklickter Link im Internetexplorer geöffnet werden sollte? Oder ein in Google-Chrome geklickter Link wird automatisch in 'nem Mircosoft-Edge geöffnet. Opera öffnet Links im FireFox, ...?

Die Möglichkeiten über HTML einen Link an einem anderen Ort, in einem neuen Fenster, ... zu öffnen, beziehen sich immer auf den gleichen Browser. Und das ist beim TWebBrowser nunmal der Internetexplorer. Funktioniert genauso, wie vorgesehen, nicht so wie gewünscht.

Die Möglichkeit einen Link in einer anderen Software zu öffnen, ist (meines Wissens) in HTML / bei Browsern nicht vorgesehen. Über PlugIns kann man z. B. "Fremdsoftware" zur Anzeige von Videos, ... bewegen, ob man sowas in der Art auch im TWebBrowser (Internetexplorer) für HTML-Seiten realisieren kann, weiß ich nicht.

ashkan19 23. Mär 2021 09:44

AW: Twebbrower Link in Standard Browser anzeigen
 
Zitat:

Zitat von Delphi.Narium (Beitrag 1485827)
Zitat:

Zitat von ashkan19 (Beitrag 1485819)
Zitat:

Zitat von Der schöne Günther (Beitrag 1485818)
Also wenn das so einfach wäre, dann würde das doch auch Embarcadero selbst können, oder? Selbst im RAD Studio 10.4.2 gehen die Youtube-Links immer noch im Internet Explorer auf...

Da hat ja der gute Embarcadero enorm versagt mit seinem Twebbrowser

Wieso? TWebBrowser ist eine Kapselung des Internetexplorers. Warum sollte der Internetexplorer einen in ihm geklickten Link in einem anderen Browser öffnen?
Wär käme z. B. auf die Idee, dass ein im FireFox geklickter Link im Internetexplorer geöffnet werden sollte? Oder ein in Google-Chrome geklickter Link wird automatisch in 'nem Mircosoft-Edge geöffnet. Opera öffnet Links im FireFox, ...?

Die Möglichkeiten über HTML einen Link an einem anderen Ort, in einem neuen Fenster, ... zu öffnen, beziehen sich immer auf den gleichen Browser. Und das ist beim TWebBrowser nunmal der Internetexplorer. Funktioniert genauso, wie vorgesehen, nicht so wie gewünscht.

Die Möglichkeit einen Link in einer anderen Software zu öffnen, ist (meines Wissens) in HTML / bei Browsern nicht vorgesehen. Über PlugIns kann man z. B. "Fremdsoftware" zur Anzeige von Videos, ... bewegen, ob man sowas in der Art auch im TWebBrowser (Internetexplorer) für HTML-Seiten realisieren kann, weiß ich nicht.

das Problem wurde sich leicht beheben, wenn ich wusste wie man den klick abfangen kann, dann konnte den klick in shellexecute ausführen

Delphi.Narium 23. Mär 2021 09:49

AW: Twebbrower Link in Standard Browser anzeigen
 
Mal bei den Ereignissen des TWebBrowsers geschaut?
Delphi-Quellcode:
procedure TForm1.WebBrowserBeforeNavigate2(Sender: TObject;
  const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
  Headers: OleVariant; var Cancel: WordBool);
Was mag URL enthalten und wofür mag Cancel da sein?

himitsu 23. Mär 2021 10:08

AW: Twebbrower Link in Standard Browser anzeigen
 
Zitat:

Zitat von himitsu (Beitrag 1485815)
Oder im OnBeforeNavigate den Klick abfangen und selbst öffnen.


Nur paar Links?
Delphi-Referenz durchsuchenTLinkLabel

:roll:

Michael II 23. Mär 2021 10:47

AW: Twebbrower Link in Standard Browser anzeigen
 
TWebBrowser.OnNewWindow3 geht auch gut, wenn du nur Links, welche ein neues Browserfenster öffnen sollen in einem beliebigen anderen Browser öffnen lassen willst.

ashkan19 23. Mär 2021 19:27

AW: Twebbrower Link in Standard Browser anzeigen
 
Zitat:

Zitat von Delphi.Narium (Beitrag 1485830)
Mal bei den Ereignissen des TWebBrowsers geschaut?
Delphi-Quellcode:
procedure TForm1.WebBrowserBeforeNavigate2(Sender: TObject;
  const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
  Headers: OleVariant; var Cancel: WordBool);
Was mag URL enthalten und wofür mag Cancel da sein?

Das Problem ist, dass, wenn ich den Cancel auf true setze und den shellexecute ausführe, der Browser dann garnicht mehr den Inhalt der Webseite auf Two Browser anzeigt

Delphi.Narium 23. Mär 2021 21:20

AW: Twebbrower Link in Standard Browser anzeigen
 
Dann musst Du halt anhand der Url entscheiden, ob etwas im TWebBrowser oder im externen Browser angezeigt werden soll.

Oder Dir im Programm 'nen Schalter setzen, damit die Routine entscheiden kann, ob eine Seite aus Deinem Programm heraus im eigenen TWebBrowser angezeigt werden soll, oder ob ein Klick im TWebBrowser erfolgte und daher ein Link im externen Browser angezeigt werden soll.

Michael II 23. Mär 2021 22:18

AW: Twebbrower Link in Standard Browser anzeigen
 
Laut #1 zeigst du Links in einem TWebBrowser W an. Falls du die Linkseite selber erstellst:

Wenn du das Ereignis aus #11 verwendest, kannst du via HTML steuern ob ein vom User geklickter Link wieder in W oder in einem externen Browser angezeigt werden soll.

Enthält der Link target="_blank" => Ereignis aus #11 wird ausgelöst => Wunschbrowser starten
ohne target="_blank" wird der Link in W angezeigt.

ashkan19 24. Mär 2021 07:17

AW: Twebbrower Link in Standard Browser anzeigen
 
Zitat:

Zitat von Michael II (Beitrag 1485898)
Laut #1 zeigst du Links in einem TWebBrowser W an. Falls du die Linkseite selber erstellst:

Wenn du das Ereignis aus #11 verwendest, kannst du via HTML steuern ob ein vom User geklickter Link wieder in W oder in einem externen Browser angezeigt werden soll.

Enthält der Link target="_blank" => Ereignis aus #11 wird ausgelöst => Wunschbrowser starten
ohne target="_blank" wird der Link in W angezeigt.

Die HTML Seite erstelle ich zwar selbst aber die links darin sind variabel und konnten minute für minute sich verändern.

Delphi.Narium 24. Mär 2021 15:45

AW: Twebbrower Link in Standard Browser anzeigen
 
Zitat:

Zitat von Michael II (Beitrag 1485898)
Enthält der Link target="_blank" => Ereignis aus #11 wird ausgelöst => Wunschbrowser starten
ohne target="_blank" wird der Link in W angezeigt.

Das stimmt so nicht: _blank bedeutet, dass das Ziel des Links in einem neuen Browserfenster geöffnet wird.

Ein Link mit target="_blank" im FireFox geklickt, wird immer ein neues Fenster des FireFox öffnen, auch wenn IE, Edge, Chrome, Opera, ... als Standardbrowser definiert sein sollten. Analog gilt das auch für die anderen Browser.

TWebBrowser ist nun mal der IE und deshalb führt target="_blank" dazu, dass ein Link in einem neuen Fenster des IEs geöffnet wird.

Zitat:

Zitat von ashkan19
Die HTML Seite erstelle ich zwar selbst aber die links darin sind variabel und konnten minute für minute sich verändern.

Wie sehen die Links denn aus? Beispiele!

Wie rufst Du denn Deine selbserstellten HTML-Seiten im TWebBrowser auf? Quelltext und Beispiellink, Dateinamen, ...

Wie sehen Deine bisherigen Versuche für das Ereignis BeforeNavigate2 des TWebBrowser aus? Beispiel!

Wenn wir dazu mal etwas tiefergehende Informationen erhalten würden, wäre eventuell sogar eine konkrete Hilfestellung möglich. Momentan ist da eine Gleichung mit 'ner unbekannten Anzahl von Unbekannten. Das ist dann eher schwierig zu lösen.

Michael II 24. Mär 2021 21:08

AW: Twebbrower Link in Standard Browser anzeigen
 
Zitat:

Zitat von Delphi.Narium (Beitrag 1485961)
Zitat:

Zitat von Michael II (Beitrag 1485898)
Enthält der Link target="_blank" => Ereignis aus #11 wird ausgelöst => Wunschbrowser starten
ohne target="_blank" wird der Link in W angezeigt.

Das stimmt so nicht: _blank bedeutet, dass das Ziel des Links in einem neuen Browserfenster geöffnet wird.

Ein Link mit target="_blank" im FireFox geklickt, wird immer ein neues Fenster des FireFox öffnen, auch wenn IE, Edge, Chrome, Opera, ... als Standardbrowser definiert sein sollten. Analog gilt das auch für die anderen Browser.

Aber sowas von stimmen tut es. Ich verwende dies seit vielen Jahren genau so in einer App, welche bis jetzt auf über 40'000 Windows Kisten installiert worden ist. Und ich habe noch nie eine gesehen, bei welcher das, was ich hier geschrieben habe nicht geht. Und ich habe viele Kisten gesehen. Und im Web findest du sicher ähnliche Infos.

Hast du das was du schreibst (wie ich) verifiziert? Oder schreibst du einfach nur so?

Michael II 24. Mär 2021 21:44

AW: Twebbrower Link in Standard Browser anzeigen
 
Noch einmal kurz:

Die Webseite L, welche du in deiner App mit TWebBrowser anzeigen lässt enthält Links.

Du möchtest nun, dass alle oder eventuell nur ein Teil dieser Links im Standardbrowser/Wunschbrowser S geöffnet werden.

Wenn du jene Links in L, welche du im Browser S öffnen lassen willst im HTML Code mit target="_blank" versiehst, dann löst TWebBrowser beim Klick auf einen dieser target="_blank" Links das Ereignis OnNewWindow3 aus. Was du tun musst ist nicht viel:

Delphi-Quellcode:
procedure TsjOnlineForm.WebBrowser1NewWindow3(ASender: TObject;
  var ppDisp: IDispatch; var Cancel: WordBool; dwFlags: Cardinal;
  const bstrUrlContext, bstrUrl: WideString);
begiB
    OeffneMitStandardBrowser( bstrUrl );
    cancel := true;
end;
(Nebenbei: Links auf deiner Seite L ohne target="_blank" werden in deinem TWebBrowser in der App geöffnet. Ich nutze dies zum Beispiel fürs Anzeigen weiterer Info-/Linkseiten direkt in der App.)

(Es ist dabei völlig egal was Firefox, Chrome, Edge,.... mit target="_blank" anstellen. Es geht hier ausschliesslich um deine Linkseite L, welche in deinem TWebBrowser angezeigt wird und nur darum, dass TWebBrowser bei Links mit target="_blank" OnNewWindow3 auslöst.)


Wenn du die HTML Seite L von Hand erstellst, dann wählst du in deinem HTML-Tool für jene Links, welche extern im Standardbrowser angezeigt werden sollen als Ziel "Neues Fenster". Wenn du die Linkseite via Software erstellst, musst du den HTML-Link-Code durch target="_blank" ergänzen.


Es führen natürlich auch andere Wege nach Rom.

ashkan19 25. Mär 2021 07:33

AW: Twebbrower Link in Standard Browser anzeigen
 
Zitat:

Zitat von Michael II (Beitrag 1485987)
Noch einmal kurz:

Die Webseite L, welche du in deiner App mit TWebBrowser anzeigen lässt enthält Links.

Du möchtest nun, dass alle oder eventuell nur ein Teil dieser Links im Standardbrowser/Wunschbrowser S geöffnet werden.

Wenn du jene Links in L, welche du im Browser S öffnen lassen willst im HTML Code mit target="_blank" versiehst, dann löst TWebBrowser beim Klick auf einen dieser target="_blank" Links das Ereignis OnNewWindow3 aus. Was du tun musst ist nicht viel:

Delphi-Quellcode:
procedure TsjOnlineForm.WebBrowser1NewWindow3(ASender: TObject;
  var ppDisp: IDispatch; var Cancel: WordBool; dwFlags: Cardinal;
  const bstrUrlContext, bstrUrl: WideString);
begiB
    OeffneMitStandardBrowser( bstrUrl );
    cancel := true;
end;

Danke Michael, funktioniert einwandfrei :thumb::thumb:

Der schöne Günther 25. Mär 2021 07:45

AW: Twebbrower Link in Standard Browser anzeigen
 
Wahnsinn, doch so einfach. Merkwürdig warum es Embarcadero das nicht hinbekommt, obwohl es seit mindestens 2015 immer wieder gemeldet wird.

https://quality.embarcadero.com/browse/RSP-12279 (2015)
(...)
https://quality.embarcadero.com/browse/RSP-32322 (2021)

ashkan19 25. Mär 2021 08:40

AW: Twebbrower Link in Standard Browser anzeigen
 
Zitat:

Zitat von Der schöne Günther (Beitrag 1486007)
Wahnsinn, doch so einfach. Merkwürdig warum es Embarcadero das nicht hinbekommt, obwohl es seit mindestens 2015 immer wieder gemeldet wird.

https://quality.embarcadero.com/browse/RSP-12279 (2015)
(...)
https://quality.embarcadero.com/browse/RSP-32322 (2021)

Frag nicht wieso, aber ich kann dir sagen dass egal auf welchem Link ich klicke,der Browser es mir gemütlich auf meinem Standard Browser anzeigt

Der schöne Günther 25. Mär 2021 08:49

AW: Twebbrower Link in Standard Browser anzeigen
 
Schade, bei mir auch in 10.4.2 nicht. Gibt sicher wichtigere Dinge, aber trotzdem etwas ernüchternd, vor allem da es sich doch anscheinend so trivial lösen lässt.

himitsu 25. Mär 2021 09:21

AW: Twebbrower Link in Standard Browser anzeigen
 
Zumindestens der aktuelle Issue ist noch offen. (Hoffnung besteht noch)

ashkan19 25. Mär 2021 09:22

AW: Twebbrower Link in Standard Browser anzeigen
 
Zitat:

Zitat von Der schöne Günther (Beitrag 1486014)
Schade, bei mir auch in 10.4.2 nicht. Gibt sicher wichtigere Dinge, aber trotzdem etwas ernüchternd, vor allem da es sich doch anscheinend so trivial lösen lässt.

komisch, ich besitze die 10.3 er Version....so unterschiedlich können die ja nicht sein


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:11 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