如何在cefsharp资源处理程序-OnBeforeResourceLoad中调用简单的javascript方法-
这就是我想要阻止页面加载时显示的某些内容的地方 这是一个只返回true或false的函数如何在cefsharp资源处理程序-OnBeforeResourceLoad中调用简单的javascript方法-,javascript,c#,asynchronous,chromium-embedded,cefsharp,Javascript,C#,Asynchronous,Chromium Embedded,Cefsharp,这就是我想要阻止页面加载时显示的某些内容的地方 这是一个只返回true或false的函数 _myfilters.blocking.matches('" + request.Url + "', '" + elType + "', document.location.href.replace(/#.*$/, '')); 我想根据上面的javascript方法来决定这个值 我怎么做 CefReturnValue IRequestHandler.OnBeforeResourceLoad
_myfilters.blocking.matches('" + request.Url + "', '" + elType + "', document.location.href.replace(/#.*$/, ''));
我想根据上面的javascript方法来决定这个值
我怎么做
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;
}
CefReturnValue IRequestHandler.OnBeforeResourceLoad(IWebBrowser浏览器控件、IBrowser浏览器、IFrame框架、IRequest请求、IRequestCallback回调)
{
字符串elType=“object”;
CefReturnValue cc=CefReturnValue。是否继续;
//任务响应=BrowserView.browser.evaluateScript异步(“函数(){return}myfilters.blocking.matches(“+request.Url+”,“+elType+”,document.location.href.replace(/#.*$/,”));
任务响应=BrowserView.browser.evaluateScript异步(“onBeforeRequestHandler({type:“+elType+”,url:“+request.url+”,frameDomain:document.location.href.replace(/##.$/,”);”;
Func Func=()=>
{
response.Wait();
返回响应;
};
函数初始值((ar)=>
{
var result=func.EndInvoke(ar);
if(result.result.result!=null&&bool.Parse(result.result.result.ToString())
{
cc=返回值。取消;
}
},
无效);
返回cc;
}
我建议不要这样做。如果你能得到一份\u myfilters.blocking
的副本,当初始页面加载并在C
中执行正则表达式时,这将是我的建议。@amaitland请查看我的新编辑。。我现在得到了回复,但我想我已经晚了,根据js函数取消了我想取消的东西。请帮助我您需要使用回调,返回ContinueAsync
。