我正在从我的网站加载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>
它可以很好地加载页面,但是当我单击“赞”按钮时,它会显示屏幕外的Facebook登录对话框,即使我从任务栏中单击它也无法将其显示在前面。
public ChromiumWebBrowser socialBrowser;
//LOAD FB LIKE PAGE
socialBrowser = new ChromiumWebBrowser("http://mywebsite.com/fb.html")
{
RequestHandler = new BrowserRequestHandler()
};
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,IFrame frame,IRequest request,IResponse response)
{
return null;
}
bool OnCertificateError(IWebBrowser browserControl,string requestUrl,ISslInfo sslInfo,IRequestCallback callback)
{
return false;
}
bool OnOpenUrlFromTab(IWebBrowser browserControl,string targetUrl,WindowOpenDisposition targetDisposition,bool userGesture)
{
return false;
}
void OnPluginCrashed(IWebBrowser browserControl,string pluginPath)
{
}
bool OnProtocolExecution(IWebBrowser browserControl,string url)
{
return false;
}
bool OnQuotaRequest(IWebBrowser browserControl,string originUrl,long newSize,IRequestCallback callback)
{
return false;
}
void OnRenderViewReady(IWebBrowser browserControl,IBrowser browser)
{
}
void OnResourceLoadComplete(IWebBrowser browserControl,IResponse response,UrlRequestStatus status,long receivedContentLength)
{
}
void OnResourceRedirect(IWebBrowser browserControl,ref string newUrl)
{
}
bool OnResourceResponse(IWebBrowser browserControl,IResponse response)
{
return false;
}
bool OnSelectClientCertificate(IWebBrowser browserControl,bool isProxy,string host,int port,X509Certificate2Collection certificates,ISelectClientCertificateCallback callback)
{
return false;
}
void OnResourceRedirect(IWebBrowser browserControl,ref string newUrl)
{
}
bool IRequestHandler.OnBeforeBrowse(IWebBrowser chromiumWebBrowser,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,bool userGesture)
{
return false;
}
bool IRequestHandler.OnCertificateError(IWebBrowser chromiumWebBrowser,IRequestCallback callback)
{
return false;
}
void IRequestHandler.OnPluginCrashed(IWebBrowser chromiumWebBrowser,string pluginPath)
{
}
bool IRequestHandler.OnSelectClientCertificate(IWebBrowser chromiumWebBrowser,ISelectClientCertificateCallback callback)
{
return false;
}
void IRequestHandler.OnRenderProcessTerminated(IWebBrowser chromiumWebBrowser,CefTerminationStatus status)
{
}
bool IRequestHandler.OnQuotaRequest(IWebBrowser chromiumWebBrowser,IRequestCallback callback)
{
return false;
}
void IRequestHandler.OnRenderViewReady(IWebBrowser chromiumWebBrowser,IBrowser browser)
{
}
public bool OnJSDialog(IWebBrowser browserControl,CefJsDialogType dialogType,string messageText,string defaultPromptText,IJsDialogCallback callback,ref bool suppressMessage)
{
callback.Continue(true);
return true;
}
public IResourceRequestHandler GetResourceRequestHandler(IWebBrowser chromiumWebBrowser,bool isnavigation,bool isDownload,string requestInitiator,ref bool disableDefaultHandling)
{
return null;
}
public bool GetauthCredentials(IWebBrowser chromiumWebBrowser,string realm,string scheme,IAuthCallback callback)
{
return false;
}
}