Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/475.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在cefsharp资源处理程序-OnBeforeResourceLoad中调用简单的javascript方法-_Javascript_C#_Asynchronous_Chromium Embedded_Cefsharp - Fatal编程技术网

如何在cefsharp资源处理程序-OnBeforeResourceLoad中调用简单的javascript方法-

如何在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

这就是我想要阻止页面加载时显示的某些内容的地方

这是一个只返回true或false的函数

   _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