Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > как вызвать window.onresize внутри prototype


Автор: StreetPeople 5.2.2009, 12:58
Добрый день!

Ниже упрощёный вариант моего кода, который закрывает полупрозрачным DIV элементом весь BODY:

Код

var Wait = function(){
    this._cover = $('cover_001');

    this.recalculate();
    window.onresize = this.recalculate;

    this.cover();
}
//----------------------------------------------------------------------------------------------------
Wait.prototype._cover;                                            // Объект слоя
Wait.prototype.opacity        =    0.4;                            // Прозрачность слоя
//--------------------------------------------------------------
Wait.prototype.rushWidth    =    0;                                // 
Wait.prototype.rushHeight    =    0;                                // 
Wait.prototype.rushX        =    0;                                // 
Wait.prototype.rushY        =    0;                                // 
//----------------------------------------------------------------------------------------------------
Wait.prototype.cover = function(){                                // Накрыть
    this.recalculate();

    this._cover.style.width            =    this.rushWidth+"px";
    this._cover.style.height        =    this.rushHeight+"px";
    this._cover.style.left            =    this.rushX+"px";
    this._cover.style.top            =    this.rushY+"px";
    this._cover.style.opacity        =    this.opacity;
    this._cover.style.filter        =    "alpha(opacity = "+(this.opacity*100)+")";
}

Wait.prototype.recalculate = function(){                        // Пересчитать ширину, высоту, позицию и т.п.
    if(this.__object.parentNode===null){
        this.rushWidth            =    this.getClientWidth();
        this.rushHeight            =    document.height || (document.body.offsetHeight+30);
        this.rushX                =    0;
        this.rushY                =    0;
    }else{
        this.rushWidth            =    this.__object.offsetWidth;
        this.rushHeight            =    this.__object.offsetHeight;
        this.rushX                =    this.findPos(this.__object)[0];
        this.rushY                =    this.findPos(this.__object)[1];
    }
}



Хочу сделать, так чтобы при изменении окна все параметры (ширина, высота, положение XY) пересчитывались... Пересчёт как вы видите идёт в функции Wait.recalculate(), как мне её можно вызвать таким образом чтобы передать в неё как аргумент сам класс Wait, к котором требуется пересчёт? Или как сделать так чтобы функция вызывалась прямо внутри нового класса Wait...



Код который используется в HTML

Код

    var screenFreeze_Object = new Wait();
    screenFreeze_Object.cover();

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)