使用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);