在自定义ContextMenuHandler中处理命令

时间:2019-03-21 16:26:29

标签: chromium cefsharp

我已经实现了自定义ContextMenuHandler

public bool OnContextMenuCommand(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IContextMenuParams parameters, CefMenuCommand commandId, CefEventFlags eventFlags)
{
    if (commandId == (CefMenuCommand)26501)
    {
        // custom logic
        return true;
    }

    if (commandId == CefMenuCommand.Back)
    {
        Dispatcher.CurrentDispatcher.Invoke(() =>
        {
            if (chromiumWebBrowser.CanGoBack) chromiumWebBrowser.Back();
        });

    }

    return true;
}

自定义命令按预期工作。但是, Back 命令不起作用。线程无权访问浏览器实例:

  

由于不同,调用线程无法访问该对象   线程拥有它。

省略调度逻辑不能解决问题。

  1. 我是否需要使用if语句显式处理 Back 命令(将被重构为小写情况,无后顾之忧)
  2. 如果是,怎么办?
  3. 一般而言,如何获取Web浏览器实例的调度程序?

1 个答案:

答案 0 :(得分:0)

解决方案是在切换时不包含<DeleteIcon onClick={this.deleteUserById(n.id)} // returns a new function. Does not console.log directly className="action" /> 命令,而返回false。

Back