PageSourceSearch

https://www.stadtwerk-am-see.de/de/static/js/HRSysLib/Hilfsfunktionen/Position.js?nc=1790327236423

js stadtwerk-am-see.de collected 2026-09-25 20:48:10 UTC 9,403 bytes, 299 lines download raw bytes

1/**
2 * Diese Funktion ermittelt die absoluten Koordinaten des übergebenen Objekts "element".
3 * 
4 * @param element Ein Element, welches Knoten des DOM-Baums
5 *        (Wichtig, denn sonst läuft getBoundingClientRect auf Fehler!) ist.
6 * 
7 * @returns null, wenn etwas bei der Positionsberechnung schiefgelaufen ist, ansonsten
8 *          ein JS-Element position mit 
9 *          position.x, die x-Koordinate des Elements.
10 *          position.y, die y-Koordinate des Elements.
11 */
12function getPosition(element)
13{
14   try
15   {
16      var elem=element,tagname="",x=0,y=0;
17
18      if (!element)
19      {
20         var position = new Object();           // Objekt mit x und y zurueckgeben
21         position.x = getScrollPosition().x;
22         position.y = getScrollPosition().y;
23
24         return position;
25      }
26      
27      // Der einfache Weg:
28      if(element.getBoundingClientRect)
29      {
30         var position = new Object();          // Objekt mit x und y zurueckgeben
31
32         position.x = element.getBoundingClientRect().left + getScrollPosition().x;
33         position.y = element.getBoundingClientRect().top  + getScrollPosition().y;
34
35         return position;
36      }
37
38      //
39      // Der raue Weg: Zu Fuß ausrechnen
40      // 	
41      while ( elem != null && (typeof(elem) == "object") && (typeof(elem.tagName) != "undefined")) // solange elem ein Objekt ist und die Eigenschaft offsetTop enthaelt
42      {
43          y += elem.offsetTop; // Offset des jeweiligen Elements addieren 
44          x += elem.offsetLeft;
45
46          tagname = elem.tagName.toUpperCase(); // tag-Name ermitteln, Grossbuchstaben
47          
48          // IE-Hack???
49          if ((navigator.userAgent.indexOf('MSIE 6.0') > -1) || (navigator.userAgent.indexOf('MSIE 7.0') > -1))
50          {
51             if (elem.id == "col3")
52             {
53                x -= elem.offsetLeft;
54             }
55          }
56          if (tagname == "BODY") // wenn beim Body-tag angekommen elem fuer Abbruch auf 0 setzen
57          {
58             elem = 0;
59          }
60          if (typeof(elem) == "object") // wenn elem ein Objekt ist und
61          {
62             if (typeof(elem.offsetParent) == "object") // offsetParent enthaelt
63             {
64                elem = elem.offsetParent; // Offset-Elternelement ermitteln
65             }
66          }
67      }
68
69      position=new Object(); // Objekt mit x und y zurueckgeben
70      position.x=x;
71      position.y=y;
72      
73      return position;
74   }
75   catch(error)
76   {
77      return null;
78   }
79}
80
81
82/**
83 * Gibt die Mauskoordinaten als eigenständiges Positionierungsobjekt zurück.
84 * Bsp.: getMouseCoords(event, {parent: iboxElem});
85 * 
86 * @param event Das Event.
87 * @param config Ein (erweiterbares) Konfigurationsobjekt.
88 *               {parent : null} Mauskoordinaten werden relativ zum gesamten Dokument angegeben (default),
89 *                   Sonst: Mauskoordinaten werden relativ zum übergebenen Element ermittelt.
90 * 
91 * @return position Ein JS-Objekt mit Membern x und y, welches die Position der Maus enthält.
92 *                  Mit position.x greift man auf ermittelte x-Koordinate und mit position.y
93 *                  auf die ermittelte y-Koordinate der Maus zu.
94 */
95function getMouseCoords(event, config)
96{
97   var position = new Object(); 
98   
99   // event überprüfen und IE-kompatibel machen
100   event = event || window.event;
101   
102   // hier sind die Maus-Koordinaten in normalen Browser. Diese sind relativ zum Dokument.
103   if(event.pageX || event.pageY)
104   {
105     position.x = event.pageX;
106     position.y = event.pageY;  
107   }
108   else  // hier sind die Maus-Koordinaten im Internet Explorer. Der speichert die Koordinaten relativ zum Fenster, nicht zum Dokument
109   {
110     position.x = event.clientX + getScrollPosition().x - document.body.clientLeft;
111     position.y = event.clientY + getScrollPosition().y - document.body.clientTop;
112   };
113   
114   if (config)
115   {
116      if (config.parent)
117      {
118         // Bestimme die Mausposition relativ zum übergebenen Objekt.
119         var positionParent = getPosition(config.parent);
120         position.x -= positionParent.x;
121         position.y -= positionParent.y;
122      }
123   }
124   return position;
125}
126
127/**
128 * Funktion ermittelt aus dem übergebenen event-Objekt die X- und Y-Korrdinate
129 * eines Touch-Events. Als Fallback werden die entsprechenden Maus-Korrdinaten
130 * geliefert, wenn es sich bei event beispielsweise nicht um ein Touch-Evwent handelt.
131 * 
132 * @param event Das Event-Objekt aus dem die Korrdinaten ermittelt werden.
133 * @returns Objekt mit den Membern x und y, die die jeweilige x bzw. y Korrdinate
134 * aus dem Touch-Event enthalten.
135 */
136function HRGetTouchCoords(event)
137{
138   var position = new Object(); 
139   
140   if (event && event.touches && event.touches.length && event.touches.length > 0)
141   {
142      position.x = event.touches[0].pageX;
143      position.y = event.touches[0].pageY;
144   }
145   else if (event && event.changedTouches && event.changedTouches.length && event.changedTouches.length > 0)
146   {
147      position.x = event.changedTouches[0].pageX;
148      position.y = event.changedTouches[0].pageY;
149   }
150   else
151   {
152      //
153      // Wenn keine Touches-Einträge gefunden wurden, versuchen wir es auf dem "normalen" Weg,
154      // als ob ein Maus-Event vorliegt.
155      //
156      position = getMouseCoords(event);
157   }
158   return position;
159}
160
161//
162// Gibt true zurück, wenn sich die Maus über dem mitübergebenen Element befindet 
163//
164function isMouseOverElement(element,event)
165{
166   if (!element || !event)
167      return false;
168   
169   var mousePos = getMouseCoords(event);
170   var targPos    = getPosition(element);
171   var targWidth  = parseInt(element.offsetWidth);
172   var targHeight = parseInt(element.offsetHeight);
173
174   if( (mousePos.x >= targPos.x)                &&              // ist rechts vom linken Rand oder darauf
175       (mousePos.x <= (targPos.x + targWidth))  &&              // ist links vom rechten Rand oder darauf
176       (mousePos.y >= targPos.y)                &&              // unterhalb vom oberen Rand oder darauf
177       (mousePos.y <= (targPos.y + targHeight)))                // oberhalb vom unteren Rand oder darauf
178   {
179       return true;
180   }
181   else
182   {
183       return false;
184   }
185}
186
187//
188// Diese Funktion richtet ein Element unter einem anderen Element aus. Der Offset wird zum y-Abstand hinzuaddiert.
189//
190function adjustFloatingElementToFixedElement(floatingElement, fixedElement,offset)
191{
192    // höhe des Elements ermitteln
193    var suchfeldHoehe = 20;                                 // angenomme Standardhöhe des Element zur Ausrichtung 
194    if(window.getComputedStyle)                             // W3C-style
195    {
196       suchfeldHoehe = parseInt(window.getComputedStyle(fixedElement, "").getPropertyValue("height"));// wird der wert nach int geparsed
197    }
198    else if(fixedElement.currentStyle )                         // IE-style
199    {
200       if (parseInt(fixedElement.currentStyle["height"]))       // wenn height ein integer enthält
201          suchfeldHoehe = parseInt(fixedElement.currentStyle["height"]); // wird der wert nach int geparsed
202    }
203    var pos = getPosition(fixedElement);
204    floatingElement.style.visibility = "visible";
205    floatingElement.style.left = pos.x + "px";
206    floatingElement.style.top  = pos.y + suchfeldHoehe + offset + "px";
207    floatingElement.style.visibility = "hidden";
208}
209
210//
211// Gibt die Position der Seite zurück, also um wieviele Pixel gescrolled wurde.
212// 
213function getScrollPosition()  
214{
215    var scrOfX = 0, scrOfY = 0;
216 
217    if( typeof( window.pageYOffset ) == 'number' ) 
218	 {
219        //Netscape compliant
220        scrOfY = window.pageYOffset;
221        scrOfX = window.pageXOffset;
222    } 
223	 else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) 
224	 {
225        //DOM compliant
226        scrOfY = document.body.scrollTop;
227        scrOfX = document.body.scrollLeft;
228    } 
229	 else if( document.documentElement ) 
230	 {
231        //IE6 standards compliant mode
232        scrOfY = document.documentElement.scrollTop;
233        scrOfX = document.documentElement.scrollLeft;
234    }
235	 
236	 var scrollPosition = new Object(); 
237	 scrollPosition.x = scrOfX;
238	 scrollPosition.y = scrOfY;
239	 
240    return scrollPosition;
241}
242
243
244
245
246// 
247// Gibt die Position der Seite zurück, also um wieviele Pixel gescrolled wurde.
248// 
249function setScrollPosition(x,y) 
250{
251	window.scrollTo(x,y);
252}
253
254
255
256// 
257// Gibt die Breite des Windows zurück
258// 
259function getWindowWidth(win) 
260{ 
261	if (win == undefined) 
262		win = window; 
263	if (win.innerWidth) 
264	{ 
265		return win.innerWidth; 
266	} 
267	else 
268	{ 
269		if (win.document.documentElement && 
270			win.document.documentElement.clientWidth) 
271			{ 
272				return win.document.documentElement.clientWidth; 
273			} 
274		return win.document.body.offsetWidth; 
275	} 
276} 
277
278
279// 
280// Gibt die Höhe des Windows zurück
281// 
282function getWindowHeight(win) 
283{ 
284	if (win == undefined) 
285		win = window; 
286	if (win.innerHeight) 
287	{ 
288		return win.innerHeight; 
289	} 
290	else 
291	{ 
292		if (win.document.documentElement 
293			&& win.document.documentElement.clientHeight) 
294			{ 
295				return win.document.documentElement.clientHeight; 
296			} 
297		return win.document.body.offsetHeight; 
298	} 
299}

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.