Hallo,
ich setze einen recht einfachen regulären Ausdruck mehrfach in einem Script ein und habe ihn daher einer Variablen zugewiesen.
Leider scheint der Safari unter Mac OS X damit ein Problem zu haben.
Gelernt habe ich bereits, daß ich exec() verwenden muß, damit auch der Mac-Safari auf die Subpatterns (RegExp.$n) zugreifen kann.
Aber nun verhält er sich beim zweiten Gebrauch des RegExp-Objekts so, als müsse das Objekt erst neu "initialisiert" oder "zurückgesetzt" werden.
Kennt Ihr dieses Phänomen?
Hier der Code:
var regexpIdFragment = new RegExp('\?(' + settings.idPrefixContentFragments + '-\d+)', 'g');
//...
if(regexpIdFragment.exec(urlInitial)) {
idCurrentFragment = RegExp.$1;
}
//...
if(regexpIdFragment.exec(urlCurrent)) {
idCurrentFragment = RegExp.$1;
}
//...
In dieser Version liefert exec() beim zweiten Mal im Mac-Safari null, so daß der zwiete if-Block übergangen wird.
Das hier dagegen klappt auch im Mac-Safari:
var regexpIdFragment = new RegExp('\?(' + settings.idPrefixContentFragments + '-\d+)', 'g');
//...
if(regexpIdFragment.exec(urlInitial)) {
idCurrentFragment = RegExp.$1;
}
//...
regexpIdFragment.exec(urlCurrent)
if(regexpIdFragment.exec(urlCurrent)) {
idCurrentFragment = RegExp.$1;
}
//...
Ebenso wie dies hier:
var regexpIdFragment = new RegExp('\?(' + settings.idPrefixContentFragments + '-\d+)', 'g');
//...
if(regexpIdFragment.exec(urlInitial)) {
idCurrentFragment = RegExp.$1;
}
//...
regexpIdFragment = new RegExp('\?(' + settings.idPrefixContentFragments + '-\d+)', 'g');
if(regexpIdFragment.exec(urlCurrent)) {
idCurrentFragment = RegExp.$1;
}
//...
Ich meine: OK, es funktioniert - aber es ist umständlich und blöde.
Habt Ihr Tipps? Und kennt Ihr vor allem die Ursache dieses Phänomens?
Thanx und ciao,
Andreas
No, Sir, I don't like it.