使用 WinForms GeckoFX 控件从 C# 调用 JavaScript 函数的推荐方法是什么?
What is the recommended way to call a javascript function from C# using the WinForms GeckoFX control?
这些问题说明了一切。我已经连接了所有内容,并且知道如何将消息从浏览器html发送到c#,但不是其他方式。
我应该能够做这样的事情:
browserControl.JSCall("myFunction('Dave','Smith');");
。在网络代码中:
function myFunction(firstName, lastName) {
$("#mydiv").text(firstName + ' ' + lastName);
}
谢谢 - 戴夫
您可以使用导航执行此操作:
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 );
}
亲爱的@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);
}
除了使用Navigate
方法之外,您还有另一种解决方法:
var script = geckofx.Document.CreateElement("script");
script.TextContent = js;
geckofx.Document.GetElementsByTagName("head").First().AppendChild(script);
相关文章:
- 打破承诺链的好方法是什么
- 在JavaScript中拆分日期字符串的更好方法是什么
- 将jQuery.ech()方法转换为本地JavaScript抽象的最佳方法是什么
- 处理浮点错误的最佳方法是什么
- 基于窗口宽度jquery的函数的替代方法是什么
- knex:根据结果创建数组的合适方法是什么
- 以编程方式填充组合框道场 (1.8) 的最佳方法是什么?
- 使用Modernizr检测移动设备最可靠的方法是什么
- 确定var是否是javascript中的elementFinder对象的方法是什么
- 用javascript修复这个JSON对象字符串最干净的方法是什么
- 让会话值可用于JavaScript的好方法是什么
- 从AngularJs获取谷歌地图对象的正确方法是什么
- 使用ReactJS和Flux架构从服务器获取数据的正确方法是什么
- 列出没有 mysql 的元素的最佳方法是什么
- 克服错误的更优雅的方法是什么:需要对象说明符.当通过JXA通过Messages发送SMS时,参数没有对象说明符
- 使用较少代码隐藏和显示选择菜单内容的更好方法是什么?javascript
- 在 Javascript 中实现解耦代码/回调的正确方法是什么?
- 使用Javascript,获取元素的方法是什么,基于打开和关闭标记之间的文本
- 在d3.json中使用d3.csv组合多个csv文件数据输入的最佳方法是什么
- 直接在DOM事件处理程序中调用作用域函数的最短方法是什么