找回密码
 加入
搜索
查看: 4474|回复: 5

[IE类操作] [已解决]IE对象位置问题

  [复制链接]
发表于 2010-6-16 12:40:36 | 显示全部楼层 |阅读模式
本帖最后由 风行者 于 2010-6-29 22:20 编辑

有没有方法得到IE对象在屏幕的位置

评分

参与人数 1金钱 +10 收起 理由
afan + 10 感谢主动将修改帖子分类为[已解决],请继续 ...

查看全部评分

发表于 2010-6-29 14:50:50 | 显示全部楼层
你是要坐标还是要什么?
坐标就用AutoIt Window Info查啊。
发表于 2010-6-29 19:15:42 | 显示全部楼层
本帖最后由 lynfr8 于 2010-6-29 19:19 编辑
#include <IE.au3>
$oIE = _IE_Example  ("form")
$oSubmit = _IEGetObjByName ($oIE, 'textExample' )
MsgBox(0,'相对位置','左'&$oSubmit.getBoundingClientRect().left&'|上'&$oSubmit.getBoundingClientRect().top&'|宽'&$oSubmit.offsetWidth&'|高'&$oSubmit.offsetHeight)

相关网页方面的参考资料:
*********************************************************************************
http://hi.baidu.com/adoblog/blog/item/2bfa3a1038c8b3f4c2ce7930.html
网页元素定位:位置与尺寸详解offsetLeft、clientHeight、scrollLeft、clientLeft
...(省略部分,但也非常重要)...

假设 obj 为某个 HTML 控件。

obj.offsetTop 指 obj 距离上方或上层控件的位置,整型,单位像素。

obj.offsetLeft 指 obj 距离左方或上层控件的位置,整型,单位像素。

obj.offsetWidth 指 obj 控件自身的宽度,整型,单位像素。

obj.offsetHeight 指 obj 控件自身的高度,整型,单位像素。

*********************************************************************************
javascript获取元素位置代码总结
http://cuckoosnest.javaeye.com/blog/469935
...(省略部分,但也非常重要)...
五、获取网页元素的相对位置
有了某个元素的绝对位置以后,获得相对位置就很容易了,只要将绝对坐标减去滚动条滚动的距离就可以了。
滚动条滚动的垂直距离,是document对象的scrollTop属性;滚动条滚动的水平距离是document对象的scrollLeft属性。



(图四 scrollTop和scrollLeft属性)
对上一节中的两个函数进行相应的改写:
  function getElementViewLeft(element){
    var actualLeft = element.offsetLeft;
    var current = element.offsetParent;
    while (current !== null){
      actualLeft += current.offsetLeft;
      current = current.offsetParent;
    }
    if (document.compatMode == "BackCompat"){
      var elementScrollLeft=document.body.scrollLeft;
    } else {
      var elementScrollLeft=document.documentElement.scrollLeft;
    }
    return actualLeft-elementScrollLeft;
  }
  function getElementViewTop(element){
    var actualTop = element.offsetTop;
    var current = element.offsetParent;
    while (current !== null){
      actualTop += current. offsetTop;
      current = current.offsetParent;
    }
     if (document.compatMode == "BackCompat"){
      var elementScrollTop=document.body.scrollTop;
    } else {
      var elementScrollTop=document.documentElement.scrollTop;
    }
    return actualTop-elementScrollTop;
  }
scrollTop和scrollLeft属性是可以赋值的,并且会立即自动滚动网页到相应位置,因此可以利用它们改变网页元素的相对位置。
另外,element.scrollIntoView()方法也有类似作用,可以使网页元素出现在浏览器窗口的左上角。
六、获取元素位置的快速方法
除了上面的函数以外,还有一种快速方法,可以立刻获得网页元素的位置。
那就是使用getBoundingClientRect()方法。它返回一个对象,其中包含了left、right、top、bottom四个属性,
分别对应了该元素的左上角和右下角相对于浏览器窗口(viewport)左上角的距离。
所以,网页元素的相对位置就是
  var X= this.getBoundingClientRect().left;

  var Y =this.getBoundingClientRect().top;
再加上滚动距离,就可以得到绝对位置
  var X= this.getBoundingClientRect().left+document.documentElement.scrollLeft;

  var Y =this.getBoundingClientRect().top+document.documentElement.scrollTop;
目前,IE、Firefox 3.0+、Opera 9.5+都支持该方法,而Firefox 2.x、Safari、Chrome、Konqueror不支持。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×

评分

参与人数 1威望 +3 金钱 +35 收起 理由
afan + 3 + 35 厉害、佩服

查看全部评分

 楼主| 发表于 2010-6-29 22:19:44 | 显示全部楼层
非常感谢楼上的帮助
发表于 2010-6-30 11:01:28 | 显示全部楼层
回复 3# lynfr8


    额。。挺深奥的,,拿回去琢磨琢磨。。3Q
发表于 2010-6-30 11:30:16 | 显示全部楼层
$array = WinGetPos("[CLASS:IEFrame]","")

这个可以吗?
WinGetPos
--------------------------------------------------------------------------------

Retrieves the position and size of a given window.


WinGetPos ( "title" [, "text"] )




Parameters

title The title of the window to read. See Title special definition.
text [optional] The text of the window to read.



Return Value

Success: Returns a 4-element array containing the following information:
$array[0] = X position
$array[1] = Y position
$array[2] = Width
$array[3] = Height
Failure: Returns 0 and sets @error to 1 if windows is not found.
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-10-3 17:18 , Processed in 0.101664 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表