如何获得webbrowser网页里某元素所占用的位置坐标? 如何获得webbrowser网页里某元素所占用的位置坐标?比如百度那个id为su的按钮占用的位置坐标左上点的坐标--右下点的坐标这个有办法实现吗?? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 查了一下,先得到这个对象,然后访问.offsetTop, .offsetLeft, .offsetWidth, .offsetHeight四个属性. offsetTop :当前对象到其上级层顶部的距离.没有到整个页面中坐标的属性吗??用style.top可以吗,貌似没返回 Private Sub Command1_Click() Set a = ie1.Document.getelementbyid("su") aax = GetPosition(a) aa = Split(aax, "|") Picture1.Width = aa(2): Picture1.Height = aa(3) Picture1.Move aa(0), aa(1)End SubPrivate Sub Form_Load() Me.Show ie1.Navigate "www.baidu.com"End SubFunction GetPosition(xobj) As String xLeft = 0: xTop = 0: GetPosition = xobj.offsetwidth & "|" & xobj.offsetheight While Not (xobj Is ie1.Document.body) xLeft = xLeft + xobj.offsetLeft xTop = xTop + xobj.offsetTop Set xobj = xobj.Parentnode Wend GetPosition = xLeft & "|" & xTop & "|" & GetPositionEnd Function结果发现不正确啊,我ie1是0,0坐标,哪里错了? Picture1.Width = aa(2): Picture1.Height = aa(3) Picture1.Move aa(0), aa(1这里每个值都要乘以15,因为VB里是用缇作单位的,而你取到的是象素. 元素相对于什么的坐标?相对于Webbrowser?Webbrowser的父容器?还是屏幕?不管什么坐标,首先要取得元素(HtmlElement)在父容器(HtmlWindow或Frame)中的位置,暂时不考虑Frame/Iframe容器的情况,那种比较复杂。首先用HtmlElment2的getBoundingClientRect方法可以得到元素的矩形(Rect),这就得到了元素在Webbrowser的位置。再用ClienttoServer,可以将它在Webbrowser中的位置分别转换成元素在容器和在屏幕的位置。只是这一步你需要用一点特殊的办法得到Webbrowser的句柄。 没啥说的,完全正确!呵呵其实获得任何一个坐标都行,我本意当然是获得相对于web容器的相对坐标了用了getBoundingClientRect果然就正确了,不过我那种写法不知道错在哪,按道理也没错啊 VB Winsock 分块发送大文件 VB打开PPT文档的问题 mscomm控件能同时输出ASCII码和十六进制吗 关于变量类型问题 哪位大侠有vb和sql2000编写的老年大学信息管理系统的,类似的也可以,小弟有急用,谢啦 我的vb 缺少microsoft activex data object 2.8 library 我想对网页上某个特定链接(含有homepage字串的)进行点击该怎么做啊? 谁有VB开发OA代码? 请教vb的常量 怎么样实现把一个表的所有数据插入到另外一个表? 关于数组赋值的办法? 打印的时候针反复的移动打印两边 字体都变粗体了 还增加了单据的打印时间
当前对象到其上级层顶部的距离.没有到整个页面中坐标的属性吗??用style.top可以吗,貌似没返回
Private Sub Command1_Click()
Set a = ie1.Document.getelementbyid("su")
aax = GetPosition(a)
aa = Split(aax, "|")
Picture1.Width = aa(2): Picture1.Height = aa(3)
Picture1.Move aa(0), aa(1)
End SubPrivate Sub Form_Load()
Me.Show
ie1.Navigate "www.baidu.com"
End SubFunction GetPosition(xobj) As String
xLeft = 0: xTop = 0: GetPosition = xobj.offsetwidth & "|" & xobj.offsetheight
While Not (xobj Is ie1.Document.body)
xLeft = xLeft + xobj.offsetLeft
xTop = xTop + xobj.offsetTop
Set xobj = xobj.Parentnode
Wend
GetPosition = xLeft & "|" & xTop & "|" & GetPosition
End Function结果发现不正确啊,我ie1是0,0坐标,哪里错了?
Picture1.Move aa(0), aa(1这里每个值都要乘以15,因为VB里是用缇作单位的,而你取到的是象素.
相对于Webbrowser?Webbrowser的父容器?还是屏幕?
不管什么坐标,首先要取得元素(HtmlElement)在父容器(HtmlWindow或Frame)中的位置,暂时不考虑Frame/Iframe容器的情况,那种比较复杂。
首先用HtmlElment2的getBoundingClientRect方法可以得到元素的矩形(Rect),这就得到了元素在Webbrowser的位置。
再用ClienttoServer,可以将它在Webbrowser中的位置分别转换成元素在容器和在屏幕的位置。只是这一步你需要用一点特殊的办法得到Webbrowser的句柄。
没啥说的,完全正确!呵呵
其实获得任何一个坐标都行,我本意当然是获得相对于web容器的相对坐标了
用了getBoundingClientRect果然就正确了,不过我那种写法不知道错在哪,按道理也没错啊