[已解决]IE对象位置问题
本帖最后由 风行者 于 2010-6-29 22:20 编辑有没有方法得到IE对象在屏幕的位置 你是要坐标还是要什么?
坐标就用AutoIt Window Info查啊。 本帖最后由 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不支持。 非常感谢楼上的帮助 回复 3# lynfr8
额。。挺深奥的,,拿回去琢磨琢磨。。3Q $array = WinGetPos("","")
这个可以吗?
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 The text of the window to read.
Return Value
Success: Returns a 4-element array containing the following information:
$array = X position
$array = Y position
$array = Width
$array = Height
Failure: Returns 0 and sets @error to 1 if windows is not found.
页:
[1]