VB.Net Webbrowser按钮ID获取及内核版本咨询
解决VB.Net WebBrowser控件的两个问题
一、获取当前焦点元素的ID
当然可以通过代码拿到当前焦点元素的ID!WebBrowser控件的Document对象自带ActiveElement属性,它就是当前获取焦点的HTML元素。直接读取它的Id属性就行,给你写个示例代码:
' 记得要在网页加载完成后执行,比如放在DocumentCompleted事件里 If WebBrowser1.Document IsNot Nothing Then Dim focusedElement As HtmlElement = WebBrowser1.Document.ActiveElement If focusedElement IsNot Nothing Then Dim elementId As String = focusedElement.Id MessageBox.Show("当前焦点元素ID:" & elementId) Else MessageBox.Show("当前没有元素获得焦点") End If End If
要是碰到动态生成的元素,一定要确保代码在网页完全加载后再跑,比如绑定到WebBrowser1_DocumentCompleted事件处理函数里,避免拿不到元素的情况。
二、WebBrowser控件的浏览器内核说明
VB.Net的WebBrowser控件其实是封装了系统里的IE内核,具体用哪个版本要看两个因素:
- 你的Windows系统安装的IE版本(从IE7到IE11都有可能)
- 注册表中的
FEATURE_BROWSER_EMULATION设置,这个键值能强制控件使用特定的IE渲染模式
如果你想手动排查当前用的是哪个版本,可以试试这两种方法:
- 在WebBrowser控件里打开
about:version页面,页面里会显示当前使用的IE版本信息 - 修改注册表强制指定内核版本(修改前记得备份注册表):
- 打开注册表编辑器,定位到
HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION - 新建一个DWORD值,名称设为你的程序.exe文件名(比如
MyVBApp.exe),值对应不同IE版本的代码:- IE7:7000
- IE8:8000(标准模式)/ 8888(兼容模式)
- IE9:9000 / 9999
- IE10:10000 / 10001
- IE11:11000 / 11001
- 打开注册表编辑器,定位到
调整后控件的渲染效果会更贴近对应版本的IE,和Chrome的差异会小一些,也方便你手动去排查按钮ID的问题。
内容的提问来源于stack exchange,提问作者ENVY
相关产品推荐
相关产品推荐

