问题描述
我只是从C#的Cefsharp开始。
一切正常,除了Cefsharp无法执行某些打开/运行计算机上特定应用程序的特殊链接。
该链接在其他Chromium官方浏览器(谷歌浏览器)上仍然有效,我点击了链接,它启动了该应用程序。 Cefshap不是,单击链接后它什么也不做。
链接看起来像这样:“ runapp://api.abcxyz / ...”
如何在Cefsharp上使用它?
image show that the link works on other chromium browsers
解决方法
首先,出于安全原因,默认情况下不加载外部协议。从历史上看,您会实施OnProtocolExecution
。
upstream
中目前存在一个OnProtocolExecution
错误,请参见https://bitbucket.org/chromiumembedded/cef/issues/2715/onprotocolexecution-page-goes-blank-after
您可以使用RequestHandler.OnBeforeBrowser并调用Process.Start
它看起来大致类似于以下内容(在Notepad ++中写得很快,可能有一些小错误需要纠正)。
public class ExampleRequestHandler : RequestHandler
{
protected override bool OnBeforeBrowse(IWebBrowser chromiumWebBrowser,IBrowser browser,IFrame frame,IRequest request,bool userGesture,bool isRedirect)
{
if(request.Url.StartsWith("mailto:"))
{
System.Diagnostics.Process.Start(request.Url);
//Cancel navigation
return true;
}
return false;
}
}
browser.RequestHandler = new ExampleRequestHandler();