Einzelnen Beitrag anzeigen

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