PageSourceSearch

https://www.bergbahn-heidelberg.de/de/static/js/HRSysLib/Hilfsfunktionen/URL.js?nc=1790757295995

js bergbahn-heidelberg.de collected 2026-10-02 04:56:00 UTC 8,814 bytes, 300 lines download raw bytes

1/*****************************************************************************************
2 * Firma:        Hehner Reus Systems GmbH
3 * Projekt:      com.cerno.basis
4 * Datei:        URL.js
5 * Erstellung:   06.09.2013
6 * Verwendung:   JavaScript-Klasse zur Bearbeitung von URLs.
7 * 
8 * $Id: URL.js,v 1.9 2025/03/28 16:18:33 lpo Exp $
9 *****************************************************************************************/
10
11/**
12 * Konstruktor für das URL-Objekt.
13 * 
14 * @param url Die zu untersuchende Url.
15 */
16HRUrl = function(url)
17{
18   try
19   {
20      this.m_Url = '';
21      this.m_BaseUrl = '';
22      this.m_IsAbsolut = false;
23      this.m_UrlParameter = '';
24      this.m_KeyValueArray = [];
25      this.m_Fragment = '';
26      
27      //
28      // Url auseinander nehmen und auf die obigen globalen Variablen verteilen.
29      //
30      if (url && typeof(url) === 'string')
31      {
32         this.m_Url = url;
33         
34         // Basis-Url bestimmen: Den Teil der Url ohne Parameter und Fragment.
35         var startParameter = this.m_Url.indexOf('?');
36         this.m_BaseUrl = (startParameter >= 0 ? this.m_Url.substring(0, startParameter) : this.m_Url);
37         
38         if (this.m_Url.toLowerCase().indexOf('http:') >= 0 || this.m_Url.toLowerCase().indexOf('https:') >= 0)
39            this.m_IsAbsolut = true;
40         
41         // Das Fragment bestimmen
42         var startFragment = this.m_Url.indexOf('#');
43         if (startFragment >= 0)
44            this.m_Fragment = this.m_Url.substring(startFragment + 1);
45         
46         // Den Parameterquery bestimmen.
47         if (startParameter >= 0 && startParameter + 1 < this.m_Url.length)
48         {
49            this.m_UrlParameter = this.m_Url.substring(startParameter + 1);
50            if (startFragment >= 0)
51            {
52               this.m_UrlParameter = this.m_Url.substring(startParameter + 1, startFragment);
53            }
54            this.m_UrlParameterLowerCase = this.m_UrlParameter.toLowerCase();
55            this.m_KeyValueArray = this.m_UrlParameter.split('&');
56         }
57      }
58   }
59   catch (e)
60   {
61      if (typeof(HRLogError) === 'function')  HRLogError(e);
62   }
63}
64
65/**
66 * Gibt alle Werte zum gesuchten Parameternamen wieder.
67 * 
68 * Beachte: Ein und derselbe Parametername kann in einer Url mehrfach vergeben werden.
69 *  
70 * @param name Der Name des gesuchten Parameters.
71 * @param ignoreCase true, falls Groß- und Kleinschreibung bei der Suche ignoriert werden sollen.
72 * @return: Ein Array mit den Werten des Parameters oder null, falls kein Parameter zum übergebenen Namen gefunden werden konnte.
73 */
74HRUrl.prototype.getAllParameter = function(name, ignoreCase)
75{
76   try
77   {
78      if (!name || typeof(name) !== 'string')
79         return null;
80      
81      var parameterArray = new Array();
82      for (let i = 0; i < this.m_KeyValueArray.length; i++)
83      {
84         if ((ignoreCase && this.m_KeyValueArray[i].toLowerCase().indexOf(name.toLowerCase() + '=') >= 0) || this.m_KeyValueArray[i].indexOf(name + '=') >= 0)
85         {
86            var ablage = this.m_KeyValueArray[i].split('=');
87            if (ablage.length > 1)
88               parameterArray.push(ablage[1]);
89         }
90      }
91      
92      if (parameterArray.length > 0)
93         return parameterArray;
94   }
95   catch (e)
96   {
97      if (typeof(HRLogError) === 'function') HRLogError(e);
98   }
99   
100   return null;
101}
102
103/**
104 * Gibt den Wert eines Parameters wieder.
105 * 
106 * @param name Der Name des gesuchten Parameters.
107 * @param ignoreCase true, falls Groß- und Kleinschreibung bei der Suche ignoriert werden sollen.
108 * @return Der Wert des Parameters oder null, falls der Parameter zum übergebenen Namen nicht gefunden werden konnte.
109 */
110HRUrl.prototype.getParameter = function(name, ignoreCase)
111{
112   var parameterArray = this.getAllParameter(name, ignoreCase);
113   
114   if (!parameterArray)
115      return null;
116   
117   return (parameterArray.length > 0 ? parameterArray[0] : '');
118}
119
120/**
121 * Prüft, ob die URL mit http/https beginnt oder nicht.
122 * 
123 * @return: true, falls sie mit "http/https" beginnt.
124 */
125HRUrl.prototype.isAbsolut = function()
126{
127   return this.m_IsAbsolut;
128}
129
130/**
131 *  Fügt der URL einen Parameter hinzu.
132 *  
133 *  @param name Name des Parameters.
134 *  @param value Value des Parameters.
135 *  @return true, falls der Parameter hinzugefügt wurde.
136 */
137HRUrl.prototype.addParameter = function(name, value)
138{
139   try
140   {
141      if (!name || typeof(name) !== 'string' || !value || (typeof(value) !== 'string' && typeof(value) !== 'number'))
142         return false;
143      
144      this.m_KeyValueArray.push(name + '=' + value);
145      
146      return true;
147   }
148   catch (e)
149   {
150      if (typeof(HRLogError) === 'function')  HRLogError(e);
151   }
152   
153   return false;
154}
155
156/**
157 * Löscht einen Parameter aus der URL. Falls mehrere Parameter 
158 * 
159 * @param name Name des zu löschenden Parameters.
160 * @param ignoreCase true, falls Groß- und Kleinschreibung bei der Suche ignoriert werden sollen.
161 * @return true, falls der Parameter gelöscht wurde.
162 */
163HRUrl.prototype.removeParameter = function(name, ignoreCase)
164{
165   try
166   {
167      var numberDeleted = 0;
168      
169      if (!name || typeof(name) != 'string')
170         return false;
171      
172      for (let i = 0; i < this.m_KeyValueArray.length; i++)
173      {
174         if ((ignoreCase && this.m_KeyValueArray[i].toLowerCase().indexOf(name.toLowerCase() + '=') >= 0) || this.m_KeyValueArray[i].indexOf(name + '=') >= 0)
175         {
176            this.m_KeyValueArray.splice(i, 1);
177            numberDeleted += 1;
178         }
179      }
180      
181      return (numberDeleted > 0 ? true : false);
182   }
183   catch (e)
184   {
185      if (typeof(HRLogError) == 'function')  HRLogError(e);
186   }
187   
188   return false;
189}
190
191/**
192 * Setzt den Wert des Parameters auf den übergebenen Wert. Falls der Parameter noch nicht existiert, wird er hinzugefügt. 
193 * 
194 * @param name Name des Parameters.
195 * @param value Der Wert des zu Parameters.
196 * @param ignoreCase true, falls Groß- und Kleinschreibung bei der Suche ignoriert werden sollen.
197 */
198HRUrl.prototype.setParameter = function(name, value, ignoreCase)
199{
200   try
201   {
202      if (!name || typeof(name) != 'string')
203         return false;
204      
205      for (let i = 0; i < this.m_KeyValueArray.length; i++)
206      {
207         if ((ignoreCase && this.m_KeyValueArray[i].toLowerCase().indexOf(name.toLowerCase() + '=') >= 0) || this.m_KeyValueArray[i].indexOf(name + '=') >= 0)
208         {
209            let key = this.m_KeyValueArray[i].substring(0, this.m_KeyValueArray[i].toLowerCase().indexOf('='));
210            this.m_KeyValueArray[i] = `${key}=${value}`;
211            return;
212         }
213      }
214      
215      // Falls kein alter, gleichnamiger Parameter gefunden wurde, fügen wir ihn neu hinzu.
216      this.addParameter(name, value);
217   }
218   catch (e)
219   {
220      if (typeof(HRLogError) == 'function')  HRLogError(e);
221   }
222}
223
224/**
225 * Prüft, ob ein bestimmter Parameter in der Url vorhanden ist.
226 * 
227 * @param name der Name des gesuchten Parameters.
228 * @param ignoreCase true, falls Groß- und Kleinschreibung bei der Suche ignoriert werden sollen.
229 * 
230 * @return true, falls der Parameter in der Url vorhanden ist.
231 */
232HRUrl.prototype.containsParameter = function(name, ignoreCase)
233{
234   if (!name || typeof(name) != 'string')
235      return false;
236   
237   for (let i = 0; i < this.m_KeyValueArray.length; i++)
238   {
239      if ((ignoreCase && this.m_KeyValueArray[i].toLowerCase().indexOf(name.toLowerCase() + '=') >= 0) || this.m_KeyValueArray[i].indexOf(name + '=') >= 0)
240      {
241         return true;
242      }
243   }
244   
245   return false;
246}
247
248/**
249 * Prüft, ob in der URL ein bestimmter Parameter mit einem bestimmten Wert vorhanden ist.
250 * 
251 * @param name ist der gesuchte Schlüssel.
252 * @param value Der gesuchte Wert.
253 * @param ignoreCase falls true, wird Groß- und Kleinschreibung ignoriert.
254 * @return true, falls der Parameter gefunden werden konnte.
255 */
256HRUrl.prototype.containsParameterValue = function(name, value, ignoreCase)
257{
258   if (!value || typeof(value) != 'string')
259      return false;
260   
261   const values = this.getAllParameter(name, ignoreCase);
262   if (values)
263   {
264      for (let i = 0; i < values.length; i++)
265      {
266         if ((ignoreCase && values[i].equalsIgnoreCase(value)) || (!ignoreCase && values[i] == value))
267            return true;
268      }
269   }
270   
271   return false;
272}
273
274/**
275 * Rückgabe der Url als Zeichenkette.
276 * 
277 * @return Die Url als Zeichenkette.
278 */
279HRUrl.prototype.toString = function()
280{
281   if (this.m_BaseUrl.length <= 0)
282      return '';
283   
284   var url = this.m_BaseUrl;
285      
286   if (this.m_KeyValueArray.length > 0)
287   {
288      url += '?';
289   }
290   
291   for (i = 0; i < this.m_KeyValueArray.length; i++)
292   {
293      url += (this.m_KeyValueArray[i] + (i < this.m_KeyValueArray.length -1 ? '&' : ''));
294   }
295   
296   if (this.m_Fragment)
297      url += '#' + this.m_Fragment;
298   
299   return url;
300}

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.