Ich versuche, die Abmessungen meines containerNode abzurufen, der Mitglied meines Dojox-Dialog-Widgets ist, wenn die angezeigte Animation des Widgets endet.

this.dialog = new dojox.widget.Dialog( { sizeToViewport: true });
var dialogContainer = this.dialog.containerNode;

Welche Funktion oder Eigenschaft soll ich verwenden?

3
fox 26 Nov. 2012 im 14:55

3 Antworten

Beste Antwort

Dies ist eine der möglichen Lösungen

dojo.connect(mydialog, "show", function(){
    setTimeout(function(){

        var position = dojo.position(dialogContainer);
        var dimensions = {
            width: position.w,
            height: position.h
         }

        alert(position.h);
    },mydialog.duration + 1500);
    });
0
fox 29 Nov. 2012 im 07:29

Ok, 2. Versuch jetzt. Da ein wenig experimentieren, führte dies nicht zu einer Lösung. Wie wäre es mit einer bösen kleinen Problemumgehung?

Bei der Untersuchung der Option sizeToViewPort - der dojox.widget.dialog habe ich herausgefunden, dass die ViewPort standardmäßig eine padding von 35px enthält. Wenn Sie also die Größe des viewport kennen, können Sie die Abmessungen des Dialogfelds ermitteln, indem Sie die Polsterung davon abziehen.

Vielleicht hilft das:

    function getNewDialog(the_padding) {
        if (!the_padding || isNaN(the_padding)) {
            the_padding = 35;
        }
        var dialog = new dojox.widget.Dialog({
            sizeToViewport: true,
            padding: the_padding + 'px' //nasty string conversion
        });

        return dialog;
    }

    function getViewPortSize() {
        var viewPortWidth;
        var viewPortHeight;
        // mozilla/netscape/opera/IE7
        if (typeof window.innerWidth != 'undefined') {
            viewPortWidth = window.innerWidth;
            viewPortHeight = window.innerHeight;
        }
        // IE6 in standards compliant mode
        else if (typeof document.documentElement !== 'undefined' && typeof document.documentElement.clientWidth !== 'undefined' && document.documentElement.clientWidth !== 0) {
            viewPortWidth = document.documentElement.clientWidth;
            viewPortHeight = document.documentElement.clientHeight;
        }
        // older versions of IE fallback
        else {
            viewPortWidth = document.getElementsByTagName('body')[0].clientWidth;
            viewPortHeight = document.getElementsByTagName('body')[0].clientHeight;
        }

        return {
            width: viewPortWidth,
            heigth: viewPortHeight
        };
    }

    function getDialogSize(the_padding) {
        if (!the_padding) {
            the_padding = 35;
        }

        var vp_size = getViewPortSize();

        return {
            width: vp_size.width - the_padding,
            heigth: vp_size.heigth - the_padding
        };
    }

    var costumPadding = 35; // this is also the default value of dojox.widget.dialog ...
    var dialog = getNewDialog(costumPadding);
    var dialogSize = getDialogSize(costumPadding);

Hoffe ich habe nichts verpasst.

0
nozzleman 29 Nov. 2012 im 07:21

Seit dojo V1.7 können Sie dojo.position verwenden.

Mit dem gegebenen Beispiel:

    var position = dojo.position(dialogContainer);
    var dimensions = {
       width: position.w,
       height: position.h
    }

Dieser Aufruf erfordert dojo/dom-geometry.

Lassen Sie mich wissen, ob es funktioniert hat.

0
nozzleman 26 Nov. 2012 im 20:24