我试图从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);
}
}
但这不起作用,我只发现作为调用geckoWebBrowser1.Navigate('javascript:functionName(1,2);');
的解决方案,但有了这个,我无法从functionName恢复返回数据并使用Navigate
进行JavaScript调用我认为是一个错误。是否无法在DOM中调用JavaScript函数并在C#中接收数据?
答案 0 :(得分: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);
}
}
在旧版本中,需要指定EvaluateScript的上下文,我在此网址中找到了示例:https://nhabuiduc.wordpress.com/2014/09/18/geckofx-net-webbrowser-setup-and-features/