Я использую cefsharp для выполнения некоторых JavaScript команд в среде браузера (консоли) внутри al oop.
Например, когда я хочу выполнить команду типа Goog_AdSense_
(связанную с " Google AdSense "), происходит сбой cefsharp, а остальная часть l oop не будет выполнена.
Я знаю, что cefsharp использует IRequestHandler
интерфейс для вызова OnRenderProcessTerminated
метода для отображения ошибки, но интересно, как чтобы продолжить отсюда!
Как выполнить и запустить остальную часть l oop?
class InternalBrowser
{
void CheckJS(AppSignature app, InternalBrowser browser, Scripts scripts)
{
foreach (var script in scripts)
browser.RunScript(script);
}
public bool RunScript(string script, InternalBrowser browser)
{
Task<JavascriptResponse> task = browser.EvaluateScriptAsync(script);
task.Wait();
bool result = task.Result.Success && (task.Result.Result != null);
return result;
}
}
class RequestHandler : IRequestHandler
{
public void OnRenderViewReady(IWebBrowser browserControl, IBrowser browser)
{
}
public bool OnProtocolExecution(IWebBrowser browserControl, IBrowser browser, string url)
{
return false;
}
public void OnPluginCrashed(IWebBrowser browserControl, IBrowser browser, string pluginPath)
{
}
public void OnRenderProcessTerminated(IWebBrowser browserControl, IBrowser browser, CefTerminationStatus status)
{
//Here is the error display
}
public bool OnBeforeBrowse(IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request, bool isRedirect)
{
return false;
}
public void OnResourceRedirect(IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request, ref string newUrl)
{
}
public bool OnResourceResponse(IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request, IResponse response)
{
var t = response.ResponseHeaders;
return false;
}
public bool OnQuotaRequest(IWebBrowser browserControl, IBrowser browser, string originUrl, long newSize, IRequestCallback callback)
{
return false;
}
public CefReturnValue OnBeforeResourceLoad(IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request, IRequestCallback callback)
{
return CefReturnValue.Continue;
}
public bool OnCertificateError(IWebBrowser browserControl, IBrowser browser, CefErrorCode errorCode, string requestUrl, ISslInfo sslInfo, IRequestCallback callback)
{
return false;
}
public bool OnOpenUrlFromTab(IWebBrowser browserControl, IBrowser browser, IFrame frame, string targetUrl, WindowOpenDisposition targetDisposition, bool userGesture)
{
return false;
}
public bool GetAuthCredentials(IWebBrowser browserControl, IBrowser browser, IFrame frame, bool isProxy, string host, int port, string realm, string scheme, IAuthCallback callback)
{
return false;
}
}
Пример в консоли Google chrome: