C# 屏幕外会出现一个对话框
我正在从我的网站加载cefsharp中的一个网页,该网页在iframe中只包含类似fb的插件C# 屏幕外会出现一个对话框,c#,cefsharp,C#,Cefsharp,我正在从我的网站加载cefsharp中的一个网页,该网页在iframe中只包含类似fb的插件 <!DOCTYPE html> <html> <head> <title>Like our Facebook page</title> </head> <body> <iframe src="https://www.facebook.com/plugins/like.php?href=https%3A%2F
<!DOCTYPE html>
<html>
<head>
<title>Like our Facebook page</title>
</head>
<body>
<iframe src="https://www.facebook.com/plugins/like.php?href=https%3A%2F%2Fwww.facebook.com%2Fmypage%2F&width=450&layout=standard&action=like&size=small&show_faces=true&share=true&height=80&appId=realappid" width="450" height="80" style="border:none;overflow:hidden" scrolling="no" frameborder="0" allowTransparency="true"></iframe>
</body>
</html>
fb iframe本身是否存在问题?
这是附加到浏览器实例的BrowserRequestHandler类
class BrowserRequestHandler : IRequestHandler
{
bool OnBeforePluginLoad(IWebBrowser browser, string url, string policyUrl, WebPluginInfo info)
{
return false;
}
bool OnCertificateError(IWebBrowser browser, CefErrorCode errorCode, string requestUrl)
{
return false;
}
void OnPluginCrashed(IWebBrowser browser, string pluginPath)
{
}
void OnRenderProcessTerminated(IWebBrowser browserControl, IBrowser browser, CefTerminationStatus status)
{
}
IResponseFilter GetResourceResponseFilter(IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request, IResponse response)
{
return null;
}
bool OnCertificateError(IWebBrowser browserControl, IBrowser browser, CefErrorCode errorCode, string requestUrl, ISslInfo sslInfo, IRequestCallback callback)
{
return false;
}
bool OnOpenUrlFromTab(IWebBrowser browserControl, IBrowser browser, IFrame frame, string targetUrl, WindowOpenDisposition targetDisposition, bool userGesture)
{
return false;
}
void OnPluginCrashed(IWebBrowser browserControl, IBrowser browser, string pluginPath)
{
}
bool OnProtocolExecution(IWebBrowser browserControl, IBrowser browser, string url)
{
return false;
}
bool OnQuotaRequest(IWebBrowser browserControl, IBrowser browser, string originUrl, long newSize, IRequestCallback callback)
{
return false;
}
void OnRenderViewReady(IWebBrowser browserControl, IBrowser browser)
{
}
void OnResourceLoadComplete(IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request, IResponse response, UrlRequestStatus status, long receivedContentLength)
{
}
void OnResourceRedirect(IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request, ref string newUrl)
{
}
bool OnResourceResponse(IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request, IResponse response)
{
return false;
}
bool OnSelectClientCertificate(IWebBrowser browserControl, IBrowser browser, bool isProxy, string host, int port, X509Certificate2Collection certificates, ISelectClientCertificateCallback callback)
{
return false;
}
void OnResourceRedirect(IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request, IResponse response, ref string newUrl)
{
}
bool IRequestHandler.OnBeforeBrowse(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IRequest request, bool userGesture, bool isRedirect)
{
string url = chromiumWebBrowser.Address;
if (url.Contains("#download-this-video-mp3"))
{
frmMainNew.DownloadVideoFromPage.StartDowbload(url, "mp3");
return true;
}
else if (url.Contains("#download-this-video-mp4"))
{
frmMainNew.DownloadVideoFromPage.StartDowbload(url, "mp4");
return true;
}
return false;
}
bool IRequestHandler.OnOpenUrlFromTab(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, string targetUrl, WindowOpenDisposition targetDisposition, bool userGesture)
{
return false;
}
bool IRequestHandler.OnCertificateError(IWebBrowser chromiumWebBrowser, IBrowser browser, CefErrorCode errorCode, string requestUrl, ISslInfo sslInfo, IRequestCallback callback)
{
return false;
}
void IRequestHandler.OnPluginCrashed(IWebBrowser chromiumWebBrowser, IBrowser browser, string pluginPath)
{
}
bool IRequestHandler.OnSelectClientCertificate(IWebBrowser chromiumWebBrowser, IBrowser browser, bool isProxy, string host, int port, X509Certificate2Collection certificates, ISelectClientCertificateCallback callback)
{
return false;
}
void IRequestHandler.OnRenderProcessTerminated(IWebBrowser chromiumWebBrowser, IBrowser browser, CefTerminationStatus status)
{
}
bool IRequestHandler.OnQuotaRequest(IWebBrowser chromiumWebBrowser, IBrowser browser, string originUrl, long newSize, IRequestCallback callback)
{
return false;
}
void IRequestHandler.OnRenderViewReady(IWebBrowser chromiumWebBrowser, IBrowser browser)
{
}
public bool OnJSDialog(IWebBrowser browserControl, IBrowser browser, string originUrl, CefJsDialogType dialogType, string messageText, string defaultPromptText, IJsDialogCallback callback, ref bool suppressMessage)
{
callback.Continue(true);
return true;
}
public IResourceRequestHandler GetResourceRequestHandler(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IRequest request, bool isNavigation, bool isDownload, string requestInitiator, ref bool disableDefaultHandling)
{
return null;
}
public bool GetAuthCredentials(IWebBrowser chromiumWebBrowser, IBrowser browser, string originUrl, bool isProxy, string host, int port, string realm, string scheme, IAuthCallback callback)
{
return false;
}
}
由ILifeSpanHandler解决
public bool OnBeforePopup(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, string targetUrl, string targetFrameName, WindowOpenDisposition targetDisposition, bool userGesture, IPopupFeatures popupFeatures, IWindowInfo windowInfo, IBrowserSettings browserSettings, ref bool noJavascriptAccess, out IWebBrowser newBrowser)
{
ChromiumWebBrowser wb = new ChromiumWebBrowser(targetUrl);
wb.Size = new System.Drawing.Size(windowInfo.Width, windowInfo.Height);
wb.Location = new System.Drawing.Point(windowInfo.X, windowInfo.Y);
newBrowser = wb;
return false;
}
由ILifeSpanHandler解决
public bool OnBeforePopup(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, string targetUrl, string targetFrameName, WindowOpenDisposition targetDisposition, bool userGesture, IPopupFeatures popupFeatures, IWindowInfo windowInfo, IBrowserSettings browserSettings, ref bool noJavascriptAccess, out IWebBrowser newBrowser)
{
ChromiumWebBrowser wb = new ChromiumWebBrowser(targetUrl);
wb.Size = new System.Drawing.Size(windowInfo.Width, windowInfo.Height);
wb.Location = new System.Drawing.Point(windowInfo.X, windowInfo.Y);
newBrowser = wb;
return false;
}
你用的是什么版本?您使用的是
WPF
还是WinForms
?从你的截图上看,问题并不是很清楚。需要更多详细信息。最新版本-WinFormsExact版本请参阅CEF 75.1.14+gc81164e+chromium-75.0.3770.100 chromium 75.0.3770.100这是CEF版本。最新版本是75.1.143。你提供的截图并没有清楚地显示我到底在做什么。您可以使用CEF示例应用程序进行测试,详细信息如下:您使用的是哪个版本?您使用的是WPF
还是WinForms
?从你的截图上看,问题并不是很清楚。需要更多详细信息。最新版本-WinFormsExact版本请参阅CEF 75.1.14+gc81164e+chromium-75.0.3770.100 chromium 75.0.3770.100这是CEF版本。最新版本是75.1.143。你提供的截图并没有清楚地显示我到底在做什么。您可以使用CEF示例应用程序进行测试,这里的详细信息我仍将等待有人回答它是否可以在不使用ILifeSpanHandler的情况下修复。我仍将等待有人回答它是否可以在不使用ILifeSpanHandler的情况下修复。