【问题标题】:Callback result JS in CefSharp OffscreenCefSharp Offscreen中的回调结果JS
【发布时间】:2022-08-15 03:28:36
【问题描述】:

帮我为当前版本的 CefSharp v103 重写旧的工作代码 .Net 4.72 CefSharp v57

我需要从 JS 结果 \'hello\' 中获得异步响应。

我尝试使用 JavascriptObjectRepository 而不是 RegisterJsObject 但它对我没有用

 public class JavascriptCallback
 {
    // событие, которое срабатывает, когда мы получаем результат из Ajax-вызова
    public event Action OnResult;

    // возвращает объект результата вызова Ajax
    public object Result { get; private set; }

    // метод, который будет вызываться из JavaScript
    public void SetResult(object result)
    {
        Result = result;

        OnResult?.Invoke();
    }

 }


        private ChromiumWebBrowser _browser;
        private readonly JavascriptCallback _javascriptCallback = new JavascriptCallback();

        _browser.RegisterJsObject(
            nameof(JavascriptCallback),
            _javascriptCallback,
            new BindingOptions
            {

                CamelCaseJavascriptNames = false
            }
        );


        Action onResultCallback = null;
        onResultCallback = () =>
        {
            _javascriptCallback.OnResult -= onResultCallback;
             // return callback result \'hello\'
             Console.WriteLine(_javascriptCallback.Result.ToString());
        };
        _javascriptCallback.OnResult += onResultCallback;

        string script =
        @\"
        $(document).ajaxSuccess((event, xhr, settings) => 
        {
               JavascriptCallback.SetResult(\'hello\');
        });
        \";
        await _browser.EvaluateScriptAsync(script);

标签: c# cefsharp cefsharp.offscreen


【解决方案1】:

此事件在 CEF 上调用,感谢 amaitland

    private void OnBrowserJavascriptMessageReceived(object sender, JavascriptMessageReceivedEventArgs e)
    {
        var message = (string)e.Message;
    }

    chromeBrowser.JavascriptMessageReceived += OnBrowserJavascriptMessageReceived;
    string script =
    @"
    $(document).ajaxSuccess((event, xhr, settings) => 
    {
           CefSharp.PostMessage('Hello');
    });
    ";
    await chromeBrowser.EvaluateScriptAsync(script);

【讨论】:

    猜你喜欢
    • 2023-03-26
    • 1970-01-01
    • 2018-09-24
    • 1970-01-01
    • 2022-10-13
    • 1970-01-01
    • 2018-10-06
    • 2019-06-04
    • 1970-01-01
    相关资源
    最近更新 更多