在GeckoFX 33中从C#调用Javascript

Zen*_*nth 4 c# geckofx

我试图从C#执行javascript调用到GeckoFX控制器中加载的Document,我这样做:

public void evaluateScript(string command)
{            
    System.Diagnostics.Debug.WriteLine("evaluateScript: " + command);
    using (Gecko.AutoJSContext context = 
        new AutoJSContext(geckoWebBrowser1.Window.JSContext))
    {
            string result;
            context.EvaluateScript(
                command, 
                (nsISupports)geckoWebBrowser1.Window.DomWindow, 
                out result);
    }
}
Run Code Online (Sandbox Code Playgroud)

但这不起作用,我只发现作为一个解决方案来调用,geckoWebBrowser1.Navigate('javascript:functionName(1,2);');但有了这个,我无法从functionName恢复返回数据并使用它Navigate来进行JavaScript调用我认为是一个错误.有没有办法在DOM中调用JavaScript函数并在C#中接收它们的数据?

Zen*_*nth 5

我找到了解决方案,在版本33中,API已经改变了一点,它更简单,因为默认情况下,如果传递参数,EvaluateScript将WebBrowser DOM作为默认上下文,并直接返回结果.

public void evaluateScript(string command)
        {

            System.Diagnostics.Debug.WriteLine("evaluateScript: " + command);
            using (Gecko.AutoJSContext context = new AutoJSContext(geckoWebBrowser1.Window.JSContext))
            {
                var result = context.EvaluateScript(command, geckoWebBrowser1.Window.DomWindow);
            }
        }
Run Code Online (Sandbox Code Playgroud)

在旧版本中,需要指定EvaluateScript的上下文,我在此URL中找到了示例:https://nhabuiduc.wordpress.com/2014/09/18/geckofx-net-webbrowser-setup-and-features/