AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Handling von zufällig auftretenden POPUP Windows im TWEbBowser.
Thema durchsuchen
Ansicht
Themen-Optionen

Handling von zufällig auftretenden POPUP Windows im TWEbBowser.

Ein Thema von wschrabi · begonnen am 20. Aug 2024 · letzter Beitrag vom 24. Sep 2024
Antwort Antwort
wschrabi

Registriert seit: 16. Jan 2005
448 Beiträge
 
#1

Handling von zufällig auftretenden POPUP Windows im TWEbBowser.

  Alt 20. Aug 2024, 07:28
Hi
Ich habe mit Delphi 10.1 Berlin eine Anwendung, die mir autom. eine Website bedient.
Dazu habe ich WebView Komponetene mir gekauft.
Doch wie kann ich die zufällig getriggerten POPUPs von der Website, die ja berechtigt sind, wegklicken?
Dazu folgendes:

Für Delphi 10.1 Berlin gibt es mehrere Alternativen zur `SHDocVw`-Einheit, die für die Arbeit mit Webbrowser-Komponenten verwendet werden können. Hier sind einige Optionen:

1. **FMX.WebBrowser**: Diese Komponente ist Teil des FireMonkey-Frameworks und kann verwendet werden, um Webinhalte in einer Delphi-Anwendung anzuzeigen. Sie bietet grundlegende Funktionen zur Anzeige von Webseiten und ist plattformübergreifend einsetzbar, was sie besonders für mobile Anwendungen geeignet macht[4].

2. **HTML Component Library**: Diese Bibliothek bietet eine native HTML-Rendering-Engine für Delphi und Lazarus. Sie ermöglicht die Integration von HTML/CSS-Funktionalitäten in Desktop-Anwendungen und bietet Unterstützung für moderne Webtechnologien[6].

3. **CEF4Delphi**: Diese Komponente basiert auf dem Chromium Embedded Framework (CEF) und ermöglicht die Integration eines vollständigen Chromium-basierten Webbrowsers in Delphi-Anwendungen. Sie bietet umfangreiche Unterstützung für moderne Webstandards und ist eine leistungsstarke Alternative zur Verwendung von Internet Explorer-basierten Komponenten wie `SHDocVw`.

4. **TMS FNC UI Pack**: Diese Sammlung von UI-Komponenten bietet ebenfalls eine Webbrowser-Komponente, die plattformübergreifend verwendet werden kann. Sie ist Teil eines größeren Pakets von UI-Komponenten, die in verschiedenen Delphi-Umgebungen eingesetzt werden können.

Diese Alternativen bieten unterschiedliche Funktionalitäten und können je nach spezifischen Anforderungen der Anwendung ausgewählt werden. Sie bieten moderne und oft plattformübergreifende Lösungen im Vergleich zur traditionellen `SHDocVw`-Einheit.

Citations:
[1] https://docwiki.embarcadero.com/RADS...und_Android%29
[2] https://stackoverflow.com/questions/...elphi-active-x
[3] https://www.cryer.co.uk/brian/delphi...fnfSHDocVw.htm
[4] http://docwiki.embarcadero.com/Libra...er.TWebBrowser
[5] https://docwiki.embarcadero.com/Libr...r.OnNewWindow2
[6] https://delphihtmlcomponents.com
[7] https://github.com/Fr0sT-Brutal/awesome-pascal
[8] https://www.delphientwickler.de/comp...id=101&catid=8

Zu SHDocVw gibt's diese INFOs: https://docwiki.embarcadero.com/Libr...r.OnNewWindow2

Und hat wer mit Delphi 10.1 dazu schon mal was realisiert?
Leider wird von der gewünschten WEBSITE kein IE7 mehr unterstützt sondern ich muss auf TWEbView von der kommerziellen Unit umsteigen.

Um die `SHDocVw`-Einheit in Delphi 10.1 Berlin zu nutzen, müssen Sie die `TWebBrowser`-Komponente verwenden, die auf die Webbrowser-Funktionen der Microsoft Shell Doc Object and Control Library (SHDOCVW.DLL) zugreift. Hier sind die Schritte, um diese Einheit in Ihrer Delphi-Anwendung zu verwenden:

### Schritte zur Nutzung von SHDocVw in Delphi 10.1

1. **Projekt erstellen**: Erstellen Sie ein neues VCL-Formularprojekt in Delphi.

2. **Komponente hinzufügen**: Fügen Sie die `TWebBrowser`-Komponente zu Ihrem Formular hinzu. Diese Komponente befindet sich in der Internet-Tool-Palette.

3. **SHDocVw in der Uses-Klausel**: Stellen Sie sicher, dass `SHDocVw` in der Uses-Klausel Ihrer Unit deklariert ist. Dies kann automatisch geschehen, wenn Sie die `TWebBrowser`-Komponente auf Ihr Formular ziehen.


Delphi-Quellcode:
   uses
     ..., SHDocVw;

4. **Webseite laden**: Verwenden Sie die `Navigate`-Methode der `TWebBrowser`-Komponente, um eine Webseite zu laden.

Delphi-Quellcode:
 procedure TForm1.Button1Click(Sender: TObject);
   begin
     WebBrowser1.Navigate('https://www.example.com');
   end;

5. **Ereignisse behandeln**: Sie können verschiedene Ereignisse der `TWebBrowser`-Komponente behandeln, wie z.B. `OnNavigateComplete2` oder `OnNewWindow2`, um auf Navigationen oder das Öffnen neuer Fenster zu reagieren[3].

### Fehlerbehebung


- **Fehlende Dateien**: Wenn Sie den Fehler "File not found: 'SHDocVw.dcu'" erhalten, könnte es daran liegen, dass die entsprechende Datei nicht auf Ihrem System vorhanden ist. In diesem Fall können Sie die `SHDocVw_TLB`-Einheit verwenden, die generiert wird, wenn Sie die Microsoft Internet Control ActiveX-Komponente importieren[6].

- **Kompatibilität**: Beachten Sie, dass `TWebBrowser` standardmäßig im IE7-Standards-Modus arbeitet, selbst wenn neuere Versionen von Internet Explorer installiert sind. Sie können den Browser-Emulationsmodus durch einen Eintrag in der Windows-Registry ändern, um eine neuere IE-Version zu simulieren[4].

Mit diesen Schritten sollten Sie in der Lage sein, die `SHDocVw`-Einheit in Delphi 10.1 erfolgreich zu nutzen und die `TWebBrowser`-Komponente in Ihren Anwendungen zu integrieren.

Citations:
[1] https://docwiki.embarcadero.com/Libr...Vw.TWebBrowser
[2] https://stackoverflow.com/questions/...tab=Unanswered
[3] https://docwiki.embarcadero.com/Libr...r.OnNewWindow2
[4] http://docwiki.embarcadero.com/Libra...Vw.TWebBrowser
[5] https://stackoverflow.com/questions/...elphi-active-x
[6] https://www.cryer.co.uk/brian/delphi...fnfSHDocVw.htm


Nachtrag Zu TWebVIEW: (auch Für Delphi 10.1)

TWebView
bietet mehrere Vorteile gegenüber **TWebBrowser** in Delphi, insbesondere wenn es um die Darstellung moderner Webinhalte und die Nutzung aktueller Webtechnologien geht. Hier sind die wichtigsten Vorteile:

### Vorteile von TWebView gegenüber TWebBrowser

1. **Unterstützung moderner Webstandards**:
- **TWebView** basiert auf der Chromium-Engine, die die neuesten Webstandards unterstützt, darunter HTML5, CSS3 und modernes JavaScript. Dadurch wird sichergestellt, dass Webanwendungen und -inhalte präzise und effizient gerendert werden.
- **TWebBrowser** hingegen basiert auf der Internet Explorer-Engine, die standardmäßig auf ältere Versionen wie IE7 zurückgreift, was zu Kompatibilitätsproblemen mit modernen Webanwendungen führen kann[5][8].

2. **Leistung und Sicherheit**:
- **TWebView** profitiert von den Leistungsverbesserungen und Sicherheitsupdates, die von der Chromium-Engine bereitgestellt werden. Es wird regelmäßig aktualisiert, um Sicherheitslücken zu schließen und die Leistung zu verbessern.
- **TWebBrowser** erhält nicht das gleiche Maß an Aktualisierungen, da er an die ältere Internet-Explorer-Technologie gebunden ist, die von Microsoft ausgemustert wird[8].

3. **Entwicklertools und Debugging**:
- Mit **TWebView** haben Entwickler Zugang zu den Chromium-Entwicklerwerkzeugen, die das Debugging und die Leistungsprofilerstellung von Webanwendungen direkt in der Komponente erleichtern.
- Dem **TWebBrowser** fehlen moderne Entwicklerwerkzeuge, was die Fehlersuche und Optimierung von Webinhalten erschwert[7].

4. **Plattformübergreifende Konsistenz**:
- **TWebView** bietet ein konsistentes Rendering-Erlebnis über verschiedene Plattformen hinweg, da es die gleiche zugrunde liegende Chromium-Engine verwendet, die auch von Browsern wie Chrome und Edge (Chromium) eingesetzt wird.
- **TWebBrowser** kann Inhalte je nach der auf dem System des Benutzers installierten Version des Internet Explorer unterschiedlich darstellen, was zu Inkonsistenzen führt[7].

5. **Zukunftssicher**:
- **TWebView** steht im Einklang mit Microsofts Strategie der Abkehr vom Internet Explorer hin zu Edge (Chromium) und ist damit eine zukunftssichere Wahl für Anwendungen, die Webinhalte anzeigen müssen.
- Mit dem Auslaufen des Internet Explorers könnte die Abhängigkeit von **TWebBrowser** zu zunehmenden Kompatibilitätsproblemen mit Webinhalten führen, da Websites die Unterstützung für ältere Browser einstellen[8].

Diese Vorteile machen **TWebView** zu einer geeigneteren Wahl für Anwendungen, die eine robuste, moderne Darstellung von Webinhalten und Interaktionsmöglichkeiten benötigen.

Zitate:
[1] http://docwiki.embarcadero.com/Libra...er.TWebBrowser
[2] https://stackoverflow.com/questions/...wser?tab=Votes
[3] https://stackoverflow.com/questions/...tab=Unanswered
[4] http://docwiki.embarcadero.com/RADSt...wser_Component
[5] http://docwiki.embarcadero.com/Libra...Vw.TWebBrowser
[6] https://www.mobiloud.com/blog/native-app-vs-webview-app
[7] https://weblog.west-wind.com/posts/2...-in-NET-Part-1
[8] https://blogs.embarcadero.com/browsi...-to-webview-2/

Um Popup-Fenster in TWebView zu blockieren, können Sie verschiedene Strategien anwenden, um sie zu verwalten oder ihr Erscheinen zu verhindern. Hier sind einige Ansätze, die Sie anwenden können:

Strategien zum Blockieren von Popups in TWebView

1 JavaScript-Einstellungen:

Eine der einfachsten Möglichkeiten, Popups zu blockieren, besteht darin, die JavaScript-Einstellungen der Webansicht zu konfigurieren. Sie können die Fähigkeit von JavaScript, neue Fenster automatisch zu öffnen, deaktivieren.

Wenn Ihre TWebView-Komponente dies zulässt, können Sie eine Eigenschaft ähnlich wie setJavaScriptCanOpenWindowsAutomatically(false) setzen, um zu verhindern, dass Popups durch JavaScript ausgelöst werden.

2 Ereignisbehandlung:


Implementieren Sie Event-Handler, die Anfragen zum Öffnen neuer Fenster abfangen. Wenn Ihre Web-View-Komponente Ereignisse für Anforderungen zum Öffnen neuer Fenster unterstützt, können Sie diese Ereignisse behandeln und entscheiden, ob das Popup zugelassen oder blockiert werden soll.
In einigen WebView-Implementierungen gibt es zum Beispiel ein Ereignis wie OnNewWindowRequested, bei dem Sie das Ereignis abbrechen können, um das Popup zu blockieren.

3 Benutzerdefinierter WebView-Client:

Wenn Ihr TWebView auf einem Framework basiert, das eine Anpassung erlaubt, können Sie bestimmte Client-Methoden außer Kraft setzen, um das Popup-Verhalten zu steuern.

In Android's WebView können Sie beispielsweise einen benutzerdefinierten WebChromeClient erstellen und Methoden wie onCreateWindow überschreiben, um zu verhindern, dass neue Fenster erstellt werden.

4 Bibliotheken von Drittanbietern:


Ziehen Sie die Verwendung von Bibliotheken oder Plugins von Drittanbietern in Betracht, die eine bessere Kontrolle über Webinhalte und Popup-Verwaltung bieten. Diese Bibliotheken können zusätzliche Hooks und Einstellungen für die effektive Verwaltung von Popups bereitstellen.

5 Konfigurationsoptionen:


Prüfen Sie, ob Ihre TWebView-Komponente über Konfigurationsoptionen speziell für die Verwaltung von Popups verfügt. Einige Komponenten ermöglichen es Ihnen, Popups über Einstellungen oder Eigenschaften zu aktivieren oder zu deaktivieren.
Durch die Umsetzung dieser Strategien können Sie Popup-Fenster in TWebView effektiv verwalten und blockieren und so eine reibungslosere Benutzererfahrung ohne unerwünschte Unterbrechungen gewährleisten.

Geändert von wschrabi (20. Aug 2024 um 09:53 Uhr)
  Mit Zitat antworten Zitat
wschrabi

Registriert seit: 16. Jan 2005
448 Beiträge
 
#2

AW: Handling von zufällig auftretenden POPUP Windows im TWEbBowser.

  Alt 20. Aug 2024, 09:55
Zitat:
Wenn Ihre TWebView-Komponente dies zulässt, können Sie eine Eigenschaft ähnlich wie setJavaScriptCanOpenWindowsAutomatically(false) setzen, um zu verhindern, dass Popups durch JavaScript ausgelöst werden.

Dazu hätte ich gern gewußt, ob mit der WinSoft.sk TWebview Componente dies auch mit Delphi 10.1 möglich wäre.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.062 Beiträge
 
Delphi 12 Athens
 
#3

AW: Handling von zufällig auftretenden POPUP Windows im TWEbBowser.

  Alt 20. Aug 2024, 10:50
Dazu hätte ich gern gewußt, ob mit der WinSoft.sk TWebview Componente dies auch mit Delphi 10.1 möglich wäre.
Da Windows das kennt, hätte ich gedachte, dass der IE ähhh Edge das auch kennen, bzw. deren Browser-Komponente,
also in ihrer Browser-API oder intern im JavaScript.
https://learn.microsoft.com/en-us/do...sautomatically

Falls im JavaScript, dann gibt es ja Beispiele, wie im Delphi in IE/Edge diese Funktion vom Code aus ausgeführt werden könnte.


Aber "nur" im Android ... von Microsoft?
Zitat:
Applies to
.NET for Android
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
wschrabi

Registriert seit: 16. Jan 2005
448 Beiträge
 
#4

AW: Handling von zufällig auftretenden POPUP Windows im TWEbBowser.

  Alt 20. Aug 2024, 22:10
Liebe Leute,
ich dachte WinEvent Library wäre da eine Idee, doch leider nein.

Ich habe das Recherchiert, und weiß aber jetzt noch nicht ob das auch mit der TWebView Komponente, die ich gekauft habe, damit ich in 10.1 es realisieren kann, auch geht:
Weiß da jemand einen guten Rat ?`
DANKE


Die Routine, die Sie in Delphi 10.1 mit der WinEvent-Bibliothek erstellt haben, um Popup-Fenster zu überwachen und Tastatureingaben zu simulieren, kann nicht direkt auf Popups angewendet werden, die innerhalb eines TWebView (oder WebView2) geöffnet werden. Dies liegt daran, dass die Art und Weise, wie Popups in WebViews behandelt werden, von der nativen Windows-API-Überwachung abweicht.

### WebView-Popup-Handling

1. **WebView2 und Popups**: WebView2, das häufig in Delphi für die Integration von Webinhalten verwendet wird, hat spezielle Mechanismen für die Behandlung von Popups. Diese Popups werden nicht als separate Windows-Fenster behandelt, sondern innerhalb des WebView-Kontextes verwaltet. Um Popups in WebView2 zu behandeln, müssen Sie das `NewWindowRequested`-Ereignis verwenden, um zu bestimmen, wann ein Popup geöffnet wird, und dann entsprechend reagieren[1][3].

2. **Ereignisbehandlung in WebView**: Sie können ein benutzerdefiniertes Ereignis im WebView einrichten, um auf Popup-Anfragen zu reagieren. Dies erfordert das Hinzufügen eines `WebChromeClient` oder eines ähnlichen Mechanismus, um Popup-Ereignisse abzufangen und zu verarbeiten[2][4].

3. **Tastatureingaben simulieren**: Um Tastatureingaben wie TAB und RETURN zu simulieren, müssen Sie sicherstellen, dass das WebView den Fokus hat und die Eingaben korrekt verarbeitet werden. Dies kann durch das Senden von JavaScript an das WebView erreicht werden, um die gewünschten Aktionen auszuführen.

### Beispiel für die Behandlung von Popups in WebView2

Hier ist ein einfaches Beispiel, wie man das `NewWindowRequested`-Ereignis in WebView2 abfangen könnte:

Delphi-Quellcode:
procedure TForm1.EdgeBrowser1NewWindowRequested(Sender: TCustomEdgeBrowser;
  const Args: ICoreWebView2NewWindowRequestedEventArgs);
begin
  // Verhindern, dass das Popup in einem neuen Fenster geöffnet wird
  Args.Handled := True;

  // Optional: Öffnen Sie die URL im aktuellen WebView
  EdgeBrowser1.Navigate(Args.Uri);
end;

### Fazit

Die direkte Überwachung und Manipulation von Popup-Fenstern in einem WebView erfordert spezifische Ansätze, die sich von der allgemeinen Windows-API-Überwachung unterscheiden. Es ist wichtig, die WebView-spezifischen Ereignisse und Methoden zu nutzen, um Popups korrekt zu handhaben und zu steuern.

Citations:
[1] https://github.com/MicrosoftEdge/Web...dback/issues/6
[2] https://github.com/NativeScript/Nati...pt/issues/6592
[3] https://github.com/MicrosoftEdge/Web...ck/issues/2707
[4] https://stackoverflow.com/questions/...-in-my-webview
[5] https://developer.android.com/refere...webkit/WebView
[6] https://www.tech-ecke.de/delphi/maus...simulieren.htm
[7] https://www.briskbard.com/forum/viewtopic.php?t=1161
  Mit Zitat antworten Zitat
wschrabi

Registriert seit: 16. Jan 2005
448 Beiträge
 
#5

AW: Handling von zufällig auftretenden POPUP Windows im TWEbBowser.

  Alt 24. Sep 2024, 21:01
Hallo Leute,
ich werde das Probieren und hoffe das funktioniert:

Um das "Webseite Verlassen"-Fenster abzufangen, das in der TWebView-Komponente von Winsoft.sk auftreten kann, müssen Sie verstehen, dass es sich um ein JavaScript-basiertes Ereignis handelt. Dieses Fenster wird normalerweise durch das `window.onbeforeunload`-Ereignis in JavaScript ausgelöst, welches eine Warnung anzeigt, wenn ein Benutzer versucht, die Seite zu verlassen[1][2].

### Abfangen des "Webseite Verlassen"-Fensters in TWebView

Da TWebView auf der Microsoft WebView2 API basiert[7], können Sie JavaScript-Ereignisse abfangen und darauf reagieren. Hier sind einige Schritte, wie Sie dieses Ereignis in Ihrer Anwendung behandeln können:

1. **JavaScript-Ereignis erkennen**: Implementieren Sie JavaScript in Ihrer Webseite, um das `onbeforeunload`-Ereignis zu überwachen. Dies könnte so aussehen:


Delphi-Quellcode:
   window.onbeforeunload = function() {
      return 'Möchten Sie die Seite wirklich verlassen?'
  }
;

2. **Ereignishandler in Delphi**: Verwenden Sie die WebView2-Ereignisse in Delphi, um auf dieses JavaScript-Ereignis zu reagieren. Sie können das `OnWebMessageReceived`-Ereignis verwenden, um Nachrichten von der Webseite zu empfangen und entsprechende Aktionen auszuführen.

3. **Benutzerdefinierte Aktionen ausführen**: Sobald das Ereignis erkannt wird, können Sie eine Funktion oder eine Benachrichtigung in Ihrer Anwendung auslösen. Dies könnte durch die Implementierung eines Event-Handlers in Delphi geschehen:

Delphi-Quellcode:
   procedure TFormMain.WebViewWebMessageReceived(Sender: TObject; Args: IWebView2WebMessageReceivedEventArgs);
   begin
       // Ihre benutzerdefinierte Funktion hier
       ShowMessage('Der Benutzer versucht, die Webseite zu verlassen.');
   end;
### Weitere Überlegungen

- **Pop-up-Verwaltung**: Wenn Ihre Anwendung auch andere Pop-ups verwalten muss, können Sie die entsprechenden Ereignisse wie `OnNewWindowRequested` verwenden, um diese zu kontrollieren[6].

- **Integrationstests**: Testen Sie Ihre Anwendung gründlich, um sicherzustellen, dass alle JavaScript-Ereignisse korrekt abgefangen und behandelt werden.

Diese Methode ermöglicht es Ihnen, auf das Verlassen der Seite zu reagieren und benutzerdefinierte Aktionen auszuführen, wenn das entsprechende JavaScript-Ereignis ausgelöst wird.

Citations:
[1] https://www.askingbox.de/info/javasc...seite-anzeigen
[2] https://blog.bartlweb.net/2010/03/js...eite-anzeigen/
[3] https://learn.microsoft.com/de-de/mi...owser-features
[4] https://www.gutefrage.net/frage/gibt...e-zu-verlassen
[5] https://appmaster.io/de/blog/was-ist-eine-webview-app
[6] https://www.delphipraxis.net/215677-...webbowser.html
[7] https://www.winsoft.sk/webview.htm
  Mit Zitat antworten Zitat
wschrabi

Registriert seit: 16. Jan 2005
448 Beiträge
 
#6

AW: Handling von zufällig auftretenden POPUP Windows im TWEbBowser.

  Alt 24. Sep 2024, 21:05
Auch eine Idee, wäre mit Injection von Javascript, die Routine zu überschreiben. Was meint Ihr dazu?

Um das "Webseite Verlassen"-Fenster in der TWebView-Komponente zu verhindern, müssen Sie das JavaScript-Ereignis `window.onbeforeunload` abfangen und entsprechend manipulieren. Dieses Ereignis wird ausgelöst, wenn ein Benutzer versucht, die Seite zu verlassen, und zeigt typischerweise eine Warnmeldung an, um den Benutzer zu fragen, ob er die Seite wirklich verlassen möchte[3][7].

### Möglichkeiten zur Verhinderung des "Webseite Verlassen"-Fensters

1. **JavaScript-Manipulation**:
- Sie können das `window.onbeforeunload`-Ereignis in Ihrem JavaScript-Code entfernen oder verhindern, dass es eine Meldung zurückgibt. Dies könnte so aussehen:


Code:
 window.onbeforeunload = null;

- Alternativ können Sie sicherstellen, dass die Funktion keine Rückgabewerte hat, um das Dialogfenster zu unterdrücken:


Code:
  window.onbeforeunload = function() {};

2. **WebView-Konfiguration**:
- Prüfen Sie, ob Ihre TWebView-Komponente die Möglichkeit bietet, JavaScript-Befehle auszuführen oder zu blockieren. Einige WebView-Implementierungen erlauben es, JavaScript-Einstellungen anzupassen oder spezifische Ereignisse zu überschreiben[1].

3. **Ereignisbehandlung in Delphi**:
- Wenn Ihre TWebView-Komponente Ereignisse wie `OnBeforeUnload` unterstützt, können Sie diese verwenden, um das Ereignis abzufangen und zu verhindern, dass es eine Warnung anzeigt. Dies erfordert jedoch spezifische Unterstützung durch die Komponente selbst.

4. **Verwendung von Drittanbieter-Bibliotheken**:
- In einigen Fällen können Drittanbieter-Bibliotheken oder Plugins helfen, die Kontrolle über Webinhalte und Popup-Verwaltung zu verbessern[1].

Durch diese Ansätze können Sie das unerwünschte "Webseite Verlassen"-Fenster in Ihrer Anwendung vermeiden und so eine reibungslosere Benutzererfahrung gewährleisten.

Citations:
[1] https://www.delphipraxis.net/215677-...webbowser.html
[2] https://www.askingbox.de/info/javasc...seite-anzeigen
[3] https://developer.mozilla.org/en-US/...reunload_event
[4] https://stackoverflow.com/questions/...e-app-regardle
[5] https://www.gutefrage.net/frage/gibt...e-zu-verlassen
[6] https://www.gutefrage.net/frage/wie-...e-verschwindet
[7] https://praxistipps.chip.de/moechten...dahinter_45357
[8] https://blog.bartlweb.net/2010/03/js...eite-anzeigen/
  Mit Zitat antworten Zitat
wschrabi

Registriert seit: 16. Jan 2005
448 Beiträge
 
#7

AW: Handling von zufällig auftretenden POPUP Windows im TWEbBowser.

  Alt 24. Sep 2024, 21:08
Noch zu Guter letzt, einen Hinweis, der auch gut zu wissen ist:

In der TWebView-Komponente, die auf WebView2 basiert, gibt es spezifische Event-Handler, die nützlich sind, um Pop-ups zu blockieren oder zu verwalten. Hier sind einige relevante Event-Handler und Techniken:

1. **`NewWindowRequested`-Ereignis**:
- Dieses Ereignis wird ausgelöst, wenn eine Webseite versucht, ein neues Fenster zu öffnen. Sie können dieses Ereignis verwenden, um zu entscheiden, ob das neue Fenster geöffnet werden soll oder nicht. Durch das Abfangen dieses Ereignisses können Sie Pop-ups effektiv blockieren oder steuern[4][5].

2. **Benutzerdefinierter WebChromeClient**:
- Wenn Ihre Implementierung dies unterstützt, können Sie einen benutzerdefinierten WebChromeClient erstellen. In Android-WebViews wird beispielsweise die Methode `onCreateWindow` überschrieben, um das Erstellen neuer Fenster zu verhindern[5].

3. **JavaScript-Einstellungen**:
- Sie können die JavaScript-Einstellungen so konfigurieren, dass das automatische Öffnen von Fenstern verhindert wird. Beispielsweise kann die Einstellung `setJavaScriptCanOpenWindowsAutomatically(false)` in einigen WebView-Implementierungen verwendet werden, um das Öffnen von Pop-ups durch JavaScript zu blockieren[1].

Diese Event-Handler und Techniken bieten Ihnen die Möglichkeit, die Kontrolle über Pop-ups in Ihrer Anwendung zu behalten und unerwünschte Fenster effektiv zu blockieren oder zu verwalten.

Citations:
[1] https://stackoverflow.com/questions/...ascript-popups
[2] https://stackoverflow.com/questions/...n-handler?rq=3
[3] https://support.microsoft.com/de-de/...4-aa47339b6bb5
[4] https://github.com/MicrosoftEdge/Web...dback/issues/6
[5] https://www.delphipraxis.net/215677-...webbowser.html
  Mit Zitat antworten Zitat
Antwort Antwort

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:32 Uhr.
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