单击“mailto:”link 时,CefSharp 未显示 "allow website to open programm" 的弹出窗口
CefSharp showes no popup for "allow website to open programm" when clicking `mailto:` link
我在里面托管一个网站 CefSharp.Wpf.ChromiumWebBrowser
在 Internet Explorer 上:
当单击一个 mailto-link "mailto:?subject=....&body=...."
Internet Explorer 显示一个弹出窗口询问
Allow website to open a program (Outlook) for "mailto:?subject=....&body=...."
在 ChromiumWebBrowser 上:
该页面导航离开带有 link 的页面,并且没有显示弹出窗口。
我必须提供 CefSharp 的哪一部分才能允许出现此类弹出窗口?
编辑:
开启 Chrome:电子邮件在 Outlook 中打开
感谢 James Thorpe's comment I used CefSharp.Example/RequestHandler.cs 作为 RequestHandler 的基础 - 更改
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;
在我的例子中,如果有 mailto: 传入,我想阻止浏览。
我确实使用了自定义协议处理程序,所以我现在全部允许它们。
我设置了这个 RequestHandler (ChromiumWebBrowser-Instance).RequestHandler 的一个实例,现在它可以工作了。
电子邮件打开,网站保持原样。还没有副作用。
我在里面托管一个网站 CefSharp.Wpf.ChromiumWebBrowser
在 Internet Explorer 上:
当单击一个 mailto-link "mailto:?subject=....&body=...."
Internet Explorer 显示一个弹出窗口询问
Allow website to open a program (Outlook) for "mailto:?subject=....&body=...."
在 ChromiumWebBrowser 上: 该页面导航离开带有 link 的页面,并且没有显示弹出窗口。
我必须提供 CefSharp 的哪一部分才能允许出现此类弹出窗口?
编辑:
开启 Chrome:电子邮件在 Outlook 中打开
感谢 James Thorpe's comment I used CefSharp.Example/RequestHandler.cs 作为 RequestHandler 的基础 - 更改
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;
在我的例子中,如果有 mailto: 传入,我想阻止浏览。 我确实使用了自定义协议处理程序,所以我现在全部允许它们。
我设置了这个 RequestHandler (ChromiumWebBrowser-Instance).RequestHandler 的一个实例,现在它可以工作了。
电子邮件打开,网站保持原样。还没有副作用。