Umgang mit Popup-Links in CefSharp

8

Ich erstelle einen Tab-Browser mit CefSharp 39.0.2 . Wenn der Benutzer gerade auf einen Link auf einer Website klickt, wird ein neues Fenster geöffnet, das nicht über meine ursprüngliche Benutzeroberfläche verfügt. Wenn Sie zum Beispiel auf einen Artikel-Link in Google News klicken, wird dieser in einem neuen Fenster geöffnet, jedoch ohne die von mir erstellten Browser-Steuerelemente. Ich habe auch in das Cef.WinForms.Example -Programm geschaut, und es macht genau dasselbe.

Ist es möglich, anders damit umzugehen? Ich möchte, dass der Link entweder in einem neuen Tab geöffnet oder in einem neuen Fenster geöffnet wird (mit allen darin enthaltenen Steuerelementen). Ich habe die GitHub-Ausgaben durchgesehen, und ich konnte so etwas nicht finden (vielleicht habe ich nicht intensiv genug gesucht, weil ich denke, dass das auch andere tun wollen ...). Ich habe alle events für die Browsersteuerung durchgesehen, und ich konnte keine finden, die so aussehen würden, als würden sie damit umgehen.

    
AJDev 31.05.2015, 03:35
quelle

1 Antwort

12

ChromiumWebBrowser hat eine Eigenschaft LifeSpanHandler . Um Popup-Fenster in Cefsharp manuell zu steuern, müssen Sie Ihr eigenes Lebensdauer-Handler-Objekt implementieren, das die ILifeSpanHandle -Schnittstelle implementiert.

Jedes Mal, wenn der Browser ein neues Fenster öffnen möchte, ruft er die OnBeforePopup -Funktion Ihres Life-Handlers auf. Hier können Sie Ihr gewünschtes Verhalten implementieren. Wenn Sie false zurückgeben, öffnet der Browser ein neues Fenster. Wenn Sie true zurückgeben, ignoriert der Browser die Popup-Aktion, aber Sie können Ihr neues Fenster, den neuen Tab usw. manuell erstellen.

Dies ist ein sehr einfaches Beispiel eines benutzerdefinierten Lebensspannen-Handlers. Bei einer Popup-Anfrage wird ein Ereignis namens PopupRequest ausgelöst. Sie können ein solches Ereignis abonnieren und ein neues Fenster / Tab manuell erstellen. Dann wird true zurückgegeben, das ChromiumWebBrowser anweist, kein eigenes neues Fenster zu erstellen. Sie müssen jedoch das Erstellen eines neuen Fensters mit einem anderen ChromiumWebBrowser selbst implementieren.

%Vor%     
Viktor Chvátal 31.05.2015, 12:57
quelle