问题说明了一切。我已将所有内容都连接起来并知道如何将消息从浏览器html发送到c#,但不是其他方式。
我应该可以做类似的事情:
browserControl.JSCall("myFunction('Dave','Smith');");
...并在网络代码中:
function myFunction(firstName, lastName) {
$("#mydiv").text(firstName + ' ' + lastName);
}
谢谢 - 戴夫
答案 0 :(得分:2)
您可以使用导航:
执行此操作browserControl.Navigate("javascript:void(myFunction('Dave','Smith'))");
注意,我发现在应用程序事件循环执行之前,代码实际上并未运行。如果这对您来说是个问题,您可以使用
跟随导航呼叫Application.DoEvents();
答案 1 :(得分:2)
我知道AutoJSContext类,所以不需要将javascript传递给Navigate()。
string outString = "";
using (Gecko.AutoJSContext java = new Gecko.AutoJSContext(geckoWebBrowser1.JSContext))
{
java.EvaluateScript(@"window.alert('alert')", out outString );
}
答案 2 :(得分:0)
除了使用Navigate
方法之外,还有另一种解决方法:
var script = geckofx.Document.CreateElement("script");
script.TextContent = js;
geckofx.Document.GetElementsByTagName("head").First().AppendChild(script);
答案 3 :(得分:0)
亲爱的@SturmCoder和@DavidCornelson是正确的。 但对于版本60.0.24.0
geckoWebBrowser1.JSCall()
和
Gecko.AutoJSContext(),它接受 geckoWebBrowser1.JSContext
已过时,而不是 geckoWebBrowser1.JSContext ,您应该编写 geckoWebBrowser1.Window
对我来说,此代码有效:
string result = "";
using (Gecko.AutoJSContext js= new Gecko.AutoJSContext(geckoWebBrowser1.Window))
{
js.EvaluateScript("myFunction('Dave','Smith');", out result);
}
或者即使网站具有jQuery,您也可以这样运行:
string result = "";
using (Gecko.AutoJSContext js= new Gecko.AutoJSContext(geckoWebBrowser1.Window))
{
js.EvaluateScript(@"alert($('#txt_username').val())", out result);
}