рони, хм, увелечение времени для timeout как вариант , я решил по другому вынес в другой метод установку позиции, вот так
this.Show = function() {
//...
win.style.top = -getModalCoords().win_height +'px'; // перенес из функции setPosition
setPosition();
};
function setPosition() {
if(!self.isOpen)
return;
var coords = getModalCoords();
if(ie8) {
overlay.style.height = document.body.scrollHeight +'px';
win.style.left = coords.left + 'px';
win.style.top = document.body.scrollTop + coords.top + 'px';
return;
}
addClass(win, 'animate');
setTimeout(function() {
win.style.left = coords.left + 'px';
win.style.top = coords.top + 'px';
}, 0);
};