为何无法用C# WebBrowser控件触发Select的Change事件?
解决WebBrowser控件触发jQuery绑定的Select Change事件问题
你遇到的问题根源在于:jQuery绑定的change事件并没有直接挂载到元素的onChange原生属性上,而是通过jQuery自身的事件管理系统维护的,所以直接调用InvokeMember("onChange")无法触发绑定的回调。
下面是两种可行的解决方法:
方法一:直接用jQuery的trigger方法触发事件
利用WebBrowser的InvokeScript执行jQuery代码,直接调用trigger触发目标元素的change事件,这是最直接的方式:
// 确保页面已加载完成且jQuery可用 br.Document.InvokeScript("eval", new object[] { "$('#letter').trigger('change');" });
方法二:分发原生Change事件
jQuery会监听元素的原生事件,所以可以通过JS创建并分发一个原生的change事件,同样能触发jQuery绑定的回调:
HtmlElement selectletter = br.Document.GetElementById("letter"); br.Document.InvokeScript("eval", new object[] { "var changeEvent = new Event('change'); " + "document.getElementById('letter').dispatchEvent(changeEvent);" });
注意事项
- 必须确保WebBrowser控件的页面已经完全加载(可在
DocumentCompleted事件中执行上述代码),且页面中的jQuery库已成功加载,否则会出现找不到$或元素的错误。
内容的提问来源于stack exchange,提问作者Jatin D
相关产品推荐
相关产品推荐

