Вроде всё учёл.
getClosestRelative: function(strict) {
var element, self = this,
pattern = strict ? /relative/ : /relative|absolute|fixed/;
while(self && self != document) {
if(pattern.test(window.getComputedStyle(self).position)) {
element = self;
break;
}
self = self.parentNode;
}
return element || document.body;
}
Что скажете, коллеги? Оставить регулярки или лучше сделать обычным сравнением через условия?
getClosestRelative: function(strict) {
var element, self = this, position;
while(self && self != document) {
position = window.getComputedStyle(self).position;
if(strict ? position == 'relative' : position != 'static') {
element = self;
break;
}
self = self.parentNode;
}
return element || document.body;
}