C# 屏幕外会出现一个对话框

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

我正在从我的网站加载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%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的情况下修复。