使用WinForms GeckoFX控件从C#调用javascript函数的推荐方法是什么?

问题说明了一切。 我已将所有内容都连接起来并知道如何将消息从浏览器html发送到c#,但不是其他方式。

我应该可以这样做:

browserControl.JSCall("myFunction('Dave','Smith');"); 

…并在网络代码中:

  function myFunction(firstName, lastName) { $("#mydiv").text(firstName + ' ' + lastName); } 

谢谢 – 戴夫

您可以使用Navigate执行此操作:

 browserControl.Navigate("javascript:void(myFunction('Dave','Smith'))"); 

注意,我发现在应用程序事件循环执行之前,代码实际上并未运行。 如果这对您来说是个问题,您可以跟随导航呼叫

 Application.DoEvents(); 

确保您考虑明确调用DoEvents的危险 。

我知道AutoJSContext类,所以不需要将javascript传递给Navigate()。

  string outString = ""; using (Gecko.AutoJSContext java = new Gecko.AutoJSContext(geckoWebBrowser1.JSContext)) { java.EvaluateScript(@"window.alert('alert')", out outString ); } 

除了使用Navigate方法之外,还有另一个解决方法:

 var script = geckofx.Document.CreateElement("script"); script.TextContent = js; geckofx.Document.GetElementsByTagName("head").First().AppendChild(script);