2017-11-24 1 views
0

Ich bin ein Webside innen CefSharp.Wpf.ChromiumWebBrowserCefSharp showes keine Pop-up für "erlauben Website Programm zu öffnen" beim Klicken `mailto:` Link

auf Internet Explorer-Hosting:

Beim Anklicken eines mailto-Link "mailto:?subject=....&body=...." Internet Explorer zeigt ein Popup fragt

zulassen Webseite ein Programm zu öffnen (Outlook) für "mailto:? subject = .... & body = ...."

Popup when clicking mailto-links

Auf ChromiumWebBrowser: Die Seite navigiert von der Seite mit dem Link entfernt und und kein Pop-up angezeigt wird.

Welchen Teil von CefSharp muss ich liefern, damit solche Popups passieren können?

Edit:

auf Chrom: E-Mail öffnet in Outlook

+1

Sieht so aus, als müssten Sie jedes Navigationsereignis mit einem benutzerdefinierten 'IRequestHandler' überprüfen und sich selbst mit nicht-http (s) -Links befassen: https://github.com/cefsharp/CefSharp/issues/735 –

+0

@JamesThorpe sieht vielversprechend aus , willst du eine Antwort geben? –

+0

Im Moment nicht wirklich in der Lage - ich würde gerne ein echtes bauen, um sicherzustellen, dass es funktioniert. Wenn du es funktionierst, kannst du [self-answer] (https://stackoverflow.com/help/self-answer) benutzen! –

Antwort

2

Dank James Thorpe's Kommentar I CefSharp.Example/RequestHandler.cs als Basis für einen Request verwendet -

bool IRequestHandler.OnBeforeBrowse (IWebBrowser browserControl, IBrowser browser, 
    IFrame frame, IRequest request, bool isRedirect) 
{ 
    if (request.Url.StartsWith ("mailto:")) 
    { 
     // use system defined handler for mailto:/ ... 
     System.Diagnostics.Process.Start (request.Url); 

     // skip browse 
     return true; 
    } 

    return false; 
} 


bool IRequestHandler.OnProtocolExecution (IWebBrowser browserControl, IBrowser browser, 
    string url) => false; 

In meinem Fall ändern mag ich Verhindere das Durchsuchen, wenn ein mailto: eingeht. Ich benutze benutzerdefinierte Protokollhandler, also erlaube ich ihnen alle - für jetzt.

Ich habe eine Instanz dieser RequestHandler (ChromiumWebBrowser-Instance) .RequestHandler und jetzt funktioniert es.

E-Mail öffnet, Website bleibt, wo es ist. Keine Nebenwirkungen - noch nicht.

Verwandte Themen