PageSourceSearch

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

js stadtwerk-am-see.de collected 2026-10-04 00:25:29 UTC 10,844 bytes, 380 lines download raw bytes

1/*****************************************************************************************
2 * Firma:        Hehner Reus Systems GmbH
3 * Projekt:      com.cerno.newsletter
4 * Datei:        Browser.js
5 * Erstellung:   08.12.2010
6 * Verwendung:   JavaScript-Klasse mit einigen Methoden für den Umgang mit den gängisten 
7 *               Browsern. Methoden sind über ein globales Objekt zugänglich
8 *               Beispiel:
9 *               HRBrowser.addToFavorites('blubber', 'http:');
10 * 
11 * $Id: Browser.js,v 1.13 2024/03/12 10:31:02 lpo Exp $
12 *****************************************************************************************/
13
14/**
15 * Der Konstruktor für unsere Browser-Klasse.
16 * Normalerweise ist es nicht nötig das Objekt zu instanzieren,
17 * da es bereits ein globales Objekt namens Browser gibt.
18 */
19HRBrowserClass = function()
20{
21   //
22   // Einige Konstanten:
23   //
24   this.KennungFirefox = 'firefox';
25   this.KennungIE = 'msie';
26   this.KennungIE11 = 'trident';
27   this.KennungEdge = 'edge';
28   
29   this.KennungWebkit = 'applewebkit';
30   this.KennungSafari = 'safari';
31   this.KennungChrome = 'chrome';
32   this.KennungOpera = 'opera';
33   this.KennungKonqueror = 'konqueror';
34   this.KennungVersion = 'version';
35   
36   this.KennungMobilePlattformiPhone = 'iphone';
37   this.KennungMobilePlattformiPod = 'ipod';
38   this.KennungMobilePlattformiPad = 'ipad';
39   this.KennungMobilePlattformAndroid = 'android';
40   this.KennungMobilePlattformBlackBerry = 'blackberry';
41   this.KennungMobilePlattformWindows = 'iemobile';
42   
43   this.m_UserAgentLowerCase = navigator.userAgent.toLowerCase();
44}
45
46/**
47 * Methode überprüft, ob der übergebene Name im userAgent des navigators vorkommt.
48 * Die Groß-/Kleinschreibung ist dabei egal.
49 * @param {Object} name
50 */
51HRBrowserClass.prototype.checkName = function(name)
52{
53   try
54   {
55      var agent = this.m_UserAgentLowerCase;
56      if (agent.indexOf(name.toLowerCase())>-1) 
57      {
58        return true;
59      }
60   }
61   catch(e)
62   {}
63   return false;
64}
65
66/**
67 * Gibt true zurück wenn der aktuelle Browser der Firefox ist,
68 * ansonsten false.
69 */
70HRBrowserClass.prototype.isFirefox = function()
71{
72   return this.checkName(this.KennungFirefox);
73}
74
75/**
76 * Gibt true zurück wenn der aktuelle Browser der InternetExplorer ist,
77 * ansonsten false.
78 */
79HRBrowserClass.prototype.isIE = function()
80{
81   return this.checkName(this.KennungIE) || this.checkName(this.KennungIE11);
82}
83
84/**
85 * Gibt true zurück wenn der aktuelle Browser der InternetExplorer ist,
86 * ansonsten false.
87 */
88HRBrowserClass.prototype.isEdge = function()
89{
90   return this.checkName(this.KennungEdge);
91}
92
93/**
94 * Gibt true zurück, wenn der aktuelle Browser von Microsoft stammt.
95 * ansonsten false.
96 */
97HRBrowserClass.prototype.isMicrosoft = function()
98{
99  return this.isIE() || this.isEdge();
100}
101
102/**
103 * Gibt true zurück wenn der aktuelle Browser der Apple Webkit ist,
104 * ansonsten false.
105 */
106HRBrowserClass.prototype.isWebkit = function()
107{
108   return this.checkName(this.KennungWebkit);
109}
110
111/**
112 * Gibt true zurück wenn der aktuelle Browser der Apple Safari ist,
113 * ansonsten false.
114 * Achtung Safari meldet sich auch als webkit.
115 */
116HRBrowserClass.prototype.isSafari = function()
117{
118   return this.checkName(this.KennungSafari);
119}
120
121/**
122 * Gibt true zurück wenn der aktuelle Browser der Google Chrome ist,
123 * ansonsten false.
124 * Achtung meldet sich auch als webkit und Safari.
125 */
126HRBrowserClass.prototype.isChrome = function()
127{
128   return this.checkName(this.KennungChrome);
129}
130
131/**
132 * Gibt true zurück wenn der aktuelle Browser der Google Chrome ist,
133 * ansonsten false.
134 */
135HRBrowserClass.prototype.isOpera = function()
136{
137   return this.checkName(this.KennungOpera);
138}
139
140/**
141 * Gibt true zurück, wenn wir uns im Browser eines "mobilen"
142 * Geräts befinden (Smartphone / Tablet).
143 */
144HRBrowserClass.prototype.isMobile = function()
145{
146   if (   this.checkName(this.KennungMobilePlattformiPhone)
147       || this.checkName(this.KennungMobilePlattformiPod)
148       || this.checkName(this.KennungMobilePlattformiPad)
149       || this.checkName(this.KennungMobilePlattformAndroid)
150       || this.checkName(this.KennungMobilePlattformBlackBerry)
151       || this.checkName(this.KennungMobilePlattformWindows))
152   {
153      return true;
154   }
155   return false;
156}
157
158/**
159 * Gibt true zurück, wenn wir uns im Browser eines "Android"
160 * Geräts befinden (Smartphone / Tablet).
161 */
162HRBrowserClass.prototype.isAndroid = function()
163{
164   if (this.checkName(this.KennungMobilePlattformAndroid))
165   {
166      return true;
167   }
168   return false;
169}
170
171/**
172 * Gibt true zurück, wenn wir uns im Browser eines "iOS"
173 * Geräts befinden (iPhone / iPad).
174 */
175HRBrowserClass.prototype.isiOS = function()
176{
177   if (this.checkName(this.KennungMobilePlattformiPhone) || this.checkName(this.KennungMobilePlattformiPod) || this.checkName(this.KennungMobilePlattformiPad))
178   {
179      return true;
180   }
181   return false;
182}
183
184/**
185 * Gibt true zurück, wenn wir uns im Browser eines "iPhone"
186 * befinden (iPhone / iPod).
187 */
188HRBrowserClass.prototype.isiPhone = function()
189{
190   if (this.checkName(this.KennungMobilePlattformiPhone) || this.checkName(this.KennungMobilePlattformiPod))
191   {
192      return true;
193   }
194   return false;
195}
196
197/**
198 * Gibt die Versionsnummer des Browsers zurück.
199 * Die VersionsNr richtet sich dabei nach dem verwendeten Browser.
200 * Bei Safari und Chrome die beispielsweise beide Webkit als Engine verwendet,
201 * wird nicht die Webkit-Version sondern die spezifische VersionsNr zurückgegeben.
202 */
203HRBrowserClass.prototype.getVersionsNr = function()
204{
205   var versionsNr = -1;
206   try
207   {
208      //
209      // Insbesondere bei Chrome, Safari und Webkit ist die Reihenfolge der Abfragen wichtig!
210      //
211      if (this.isFirefox())
212         return this.getVersionsNrHinterKennung(this.KennungFirefox);
213      else if (this.isIE())
214         return this.getIEVersionsNr();
215      else if (this.isChrome())
216         return this.getVersionsNrHinterKennung(this.KennungChrome);
217      else if (this.isSafari())
218         return this.getVersionsNrHinterKennung(this.KennungVersion);
219      else if (this.isWebkit())
220         return this.getVersionsNrHinterKennung(this.KennungWebkit);
221      else if (this.isOpera())
222         return this.getVersionsNrHinterKennung(this.KennungVersion);
223      else
224         return this.getVersionsNrHinterKennung(this.KennungVersion);
225   }
226   catch (e) 
227   {
228   }
229   return versionsNr;
230}
231
232/**
233 * Liefert die VersionsNr des Browser, wenn es sich um den IE handelt,
234 * ansonsten -1, wenn ein anderer Browser zum Einsatz kommt.
235 * Methode dient der Schreiberleichterung, da ggfs. die Abfrage des Browsers
236 * entfallen kann.
237 */
238HRBrowserClass.prototype.getIEVersionsNr = function()
239{
240   var versionsNr = -1;
241   if (this.checkName(this.KennungIE))
242   {
243      versionsNr = this.getVersionsNrHinterKennung(this.KennungIE);
244   }
245   else if (this.checkName(this.KennungIE11))
246   {
247      versionsNr = this.getVersionsNrHinterKennung(this.KennungIE11);
248      if (versionsNr <= 5)
249         versionsNr = 9.0;
250      else if (versionsNr <= 6)
251         versionsNr = 10.0;
252      else if (versionsNr > 6)
253         versionsNr = 11.0;
254   }
255   return versionsNr;
256}
257
258/**
259 * Liefert die VersionsNr des Browser, wenn es sich um den Webkit handelt,
260 * ansonsten -1, wenn ein anderer Browser zum Einsatz kommt.
261 * Methode ist ggfs. wichtig, da Chrome beispielsweise den Webkit verwendet.
262 */
263HRBrowserClass.prototype.getWebkitVersionsNr = function()
264{
265   var versionsNr = -1;
266   if (this.isWebkit())
267      versionsNr = this.getVersionsNrHinterKennung(this.KennungWebkit);
268   
269   return versionsNr;
270}
271
272
273/**
274 * Liefert die erste Zahl hinter dem Token im AgentString des Browsers.
275 */
276HRBrowserClass.prototype.getVersionsNrHinterKennung = function(kennung)
277{
278   var versionsNr = -1;
279   try
280   {
281      var agentStr = this.m_UserAgentLowerCase;
282      var startIndex = agentStr.indexOf(kennung.toLowerCase());
283      if (startIndex >= 0)
284      {
285         startIndex += kennung.length;
286         while (isNaN(agentStr.charAt(startIndex)) && startIndex < agentStr.length)
287            startIndex++;
288         
289         if (startIndex < agentStr.length)
290         {
291            agentStr = agentStr.substring(startIndex);
292            versionsNr = parseFloat(agentStr);
293         }
294      }
295   }
296   catch (e) 
297   {}
298   return versionsNr;
299}
300
301
302/**
303 * Fügt die URL unter dem Namen zu den Favoriten hinzu.
304 * Funktioniert zur Zeit nur in IE und Firefox. 
305 * Im Firefox ist es auch nur eine etwas unschöne Behelfslösung.
306 * @param {Object} name
307 * @param {Object} url
308 */
309HRBrowserClass.prototype.addToFavorites = function(name, url)
310{
311   try
312   {
313      if (name && url)
314      {
315         if (window.sidebar) // Firefox
316         {
317            window.sidebar.addPanel(name, url, '');
318         }
319         if (window.external && typeof (window.external.AddFavorite) !== "undefined") // Internet
320                                                                                       // Explorer
321         {
322            window.external.AddFavorite(url, name);
323         }
324      }
325   }
326   catch (e)
327   {}
328}
329
330/**
331 * Setzt die URL in homepage als neue Startseite des Browser.
332 * Funktioniert zur Zeit nur im IE. In anderen Browsern scheint
333 * diese Funktionalität nicht vorgesehen zu sein.
334 * 
335 * @param {Object} homepage Neue URL als Startseite.
336 */
337HRBrowserClass.prototype.setAsDefaultHome = function(homepage)
338{
339   try
340   {
341      if (this.isIE())
342      {
343         document.body.style.behavior = 'url(#default#homepage)';
344         document.body.setHomePage(homepage);
345      }
346   }
347   catch (e)
348   {}
349}
350
351/**
352 * Prüft, ob die Do-Not-Track-Einstellung des Browsers gesetzt ist.
353 * 
354 * @return {boolean} true, falls die Do-Not-Track-Einstellung gesetzt ist und false, 
355 *         falls nicht oder der Browser diese Einstellung nicht unterstützt.
356 */
357HRBrowserClass.prototype.isDoNotTrackActive = function()
358{
359   try
360   {
361      if (window.doNotTrack || navigator.doNotTrack || navigator.msDoNotTrack)
362         return (window.doNotTrack == "1" || navigator.doNotTrack == "yes" || navigator.doNotTrack == "1" || navigator.msDoNotTrack == "1");
363      else
364      {
365         // Der Browser unterstütz kein do-not-track.
366         return false;
367      }
368   }
369   catch (e)
370   {
371      if (typeof(HRLogError) == 'function')
372         HRLogError(e);
373   }
374}
375
376/**
377 * Wir legen ein globales Browser-Objekt an, so dass wir bequem z.B. mit
378 * HRBrowser.checkName(..) auf die verschiedenen Funktionen zugreifen können.
379 */
380var HRBrowser = new HRBrowserClass();

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.