这是我想阻止加载页面时要显示的内容的地方。
这个函数只返回true或false
_myfilters.blocking.matches('" + request.Url + "', '" + elType + "', document.location.href.replace(/#.*$/, ''));
我想根据上面的这个javascript方法决定CefReturnValue。
我该怎么做?
CefReturnValue IRequestHandler.OnBeforeResourceLoad(IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request, IRequestCallback callback)
{
bool result = ... this is coming from javascript, how ?
if (result )
CefReturnValue.Cancel;
else
CefReturnValue.Continue;
}
//我的方法
CefReturnValue IRequestHandler.OnBeforeResourceLoad(IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request, IRequestCallback callback)
{
string elType = "object";
CefReturnValue cc = CefReturnValue.Continue;
// Task<CefSharp.JavascriptResponse> response = BrowserView.browser.EvaluateScriptAsync(" function() { return _myfilters.blocking.matches('" + request.Url + "', '" + elType + "', document.location.href.replace(/#.*$/, '')); } ");
Task<CefSharp.JavascriptResponse> response = BrowserView.browser.EvaluateScriptAsync("onBeforeRequestHandler({type:'" + elType + "' , url:'" + request.Url + "' , frameDomain:document.location.href.replace(/#.*$/, '')});");
Func<Task<CefSharp.JavascriptResponse>> func = () =>
{
response.Wait();
return response;
};
func.BeginInvoke((ar) =>
{
var result = func.EndInvoke(ar);
if (result.Result.Result != null && bool.Parse(result.Result.Result.ToString()))
{
cc = CefReturnValue.Cancel;
}
},
null);
return cc;
}