我试图避免页面上的js警报,因为它打破了流程,浏览器卡在该页面上,直到单击弹出窗口.
我添加了Class,如示例所示:
public class JsDialogHandler : IJsDialogHandler { public bool OnJSDialog(IWebBrowser browserControl, IBrowser browser, string originUrl, CefJsDialogType dialogType, string messageText, string defaultPromptText, IJsDialogCallback callback, ref bool suppressMessage) { return true; } public bool OnJSBeforeUnload(IWebBrowser browserControl, IBrowser browser, string message, bool isReload, IJsDialogCallback callback) { return true; } public void OnResetDialogState(IWebBrowser browserControl, IBrowser browser) { } public void OnDialogClosed(IWebBrowser browserControl, IBrowser browser) { } }
我分配给Chromium浏览器:
CefSharp.Cef.Initialize(new CefSharp.CefSettings()); browser = new CefSharp.WinForms.ChromiumWebBrowser(CustomLinks[0].ToString()); JsDialogHandler jss = new JsDialogHandler(); browser.JsDialogHandler = jss;
事情是当警报应该显示它确实运行OnJSDialog
事件.但随后浏览器变白了,只是卡住并试图找到解决方法,但网上可用的不多.
有什么建议?
在OnJSDialog
处理程序的方法中,请确保调用Continue(...)
回调:
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; }