Javascript取得控件的位置,很實用.
1
function getElementPos(elementId) {
2
3
4
5
var ua = navigator.userAgent.toLowerCase();
6
7
var isOpera = (ua.indexOf('opera') != -1);
8
9
var isIE = (ua.indexOf('msie') != -1 && !isOpera); // not opera spoof
10
11
12
13
var el = document.getElementById(elementId);
14
15
16
17
if(el.parentNode === null || el.style.display == 'none')
18
19
{
20
21
return false;
22
23
}
24
25
26
27
var parent = null;
28
29
var pos = [];
30
31
var box;
32
33
34
35
if(el.getBoundingClientRect) //IE
36
37
{
38
39
box = el.getBoundingClientRect();
40
41
var scrollTop = Math.max(document.documentElement.scrollTop, document.body.scrollTop);
42
43
var scrollLeft = Math.max(document.documentElement.scrollLeft, document.body.scrollLeft);
44
45
46
47
return {x:box.left + scrollLeft, y:box.top + scrollTop};
48
49
}
50
51
else if(document.getBoxObjectFor) // gecko
52
53
{
54
55
box = document.getBoxObjectFor(el);
56
57
58
var borderLeft = (el.style.borderLeftWidth)?parseInt(el.style.borderLeftWidth):0;
59
60
var borderTop = (el.style.borderTopWidth)?parseInt(el.style.borderTopWidth):0;
61
62
63
64
pos = [box.x - borderLeft, box.y - borderTop];
65
66
}
67
68
else // safari & opera
69
70
{
71
72
pos = [el.offsetLeft, el.offsetTop];
73
74
parent = el.offsetParent;
75
76
if (parent != el) {
77
78
while (parent) {
79
80
pos[0] += parent.offsetLeft;
81
82
pos[1] += parent.offsetTop;
83
84
parent = parent.offsetParent;
85
86
}
87
88
}
89
90
if (ua.indexOf('opera') != -1
91
92
|| ( ua.indexOf('safari') != -1 && el.style.position == 'absolute' ))
93
94
{
95
96
pos[0] -= document.body.offsetLeft;
97
98
pos[1] -= document.body.offsetTop;
99
100
}
101
102
}
103
104
105
if (el.parentNode) { parent = el.parentNode; }
106
107
else { parent = null; }
108
109
110
while (parent && parent.tagName != 'BODY' && parent.tagName != 'HTML')
111
112
{ // account for any scrolled ancestors
113
114
pos[0] -= parent.scrollLeft;
115
116
pos[1] -= parent.scrollTop;
117
118
119
if (parent.parentNode) { parent = parent.parentNode; }
120
121
else { parent = null; }
122
123
}
124
125
return {x:pos[0], y:pos[1]};
126
127
}
128
129
function getElementPos(elementId) {2

3
4

5
var ua = navigator.userAgent.toLowerCase();6

7
var isOpera = (ua.indexOf('opera') != -1);8

9
var isIE = (ua.indexOf('msie') != -1 && !isOpera); // not opera spoof10

11
12

13
var el = document.getElementById(elementId);14

15
16

17
if(el.parentNode === null || el.style.display == 'none')18

19
{20

21
return false;22

23
}24

25
26

27
var parent = null;28

29
var pos = [];30

31
var box;32

33
34

35
if(el.getBoundingClientRect) //IE36

37
{38

39
box = el.getBoundingClientRect();40

41
var scrollTop = Math.max(document.documentElement.scrollTop, document.body.scrollTop);42

43
var scrollLeft = Math.max(document.documentElement.scrollLeft, document.body.scrollLeft);44

45
46

47
return {x:box.left + scrollLeft, y:box.top + scrollTop};48

49
}50

51
else if(document.getBoxObjectFor) // gecko52

53
{54

55
box = document.getBoxObjectFor(el);56

57

58
var borderLeft = (el.style.borderLeftWidth)?parseInt(el.style.borderLeftWidth):0;59

60
var borderTop = (el.style.borderTopWidth)?parseInt(el.style.borderTopWidth):0;61

62
63

64
pos = [box.x - borderLeft, box.y - borderTop];65

66
}67

68
else // safari & opera69

70
{71

72
pos = [el.offsetLeft, el.offsetTop];73

74
parent = el.offsetParent;75

76
if (parent != el) {77

78
while (parent) {79

80
pos[0] += parent.offsetLeft;81

82
pos[1] += parent.offsetTop;83

84
parent = parent.offsetParent;85

86
}87

88
}89

90
if (ua.indexOf('opera') != -191

92
|| ( ua.indexOf('safari') != -1 && el.style.position == 'absolute' ))93

94
{95

96
pos[0] -= document.body.offsetLeft;97

98
pos[1] -= document.body.offsetTop;99

100
}101

102
}103

104

105
if (el.parentNode) { parent = el.parentNode; }106

107
else { parent = null; }108

109

110
while (parent && parent.tagName != 'BODY' && parent.tagName != 'HTML')111

112
{ // account for any scrolled ancestors113

114
pos[0] -= parent.scrollLeft;115

116
pos[1] -= parent.scrollTop;117

118

119
if (parent.parentNode) { parent = parent.parentNode; }120

121
else { parent = null; }122

123
}124

125
return {x:pos[0], y:pos[1]};126

127
} 128

129




浙公网安备 33010602011771号