3

ウィジェットの表示アニメーションが終了したときに、dojoxダイアログウィジェットのメンバーであるcontainerNodeのディメンションを取得しようとしています。

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

どの関数またはプロパティを使用する必要がありますか?

4

3 に答える 3

0

OK、2回目の試行です。少し実験してみましたが、解決策にはなりませんでした。厄介な小さな回避策はどうですか?

iのsizeToViewPort-optionを調べたdojox.widget.dialogところ、デフォルトでのがであることがわかりpaddingまし35pxViewPort。したがって、のサイズがわかっている場合viewportは、ダイアログからパディングを差し引くことで、ダイアログのサイズを取得できます。

だから多分これは役立ちます:

    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);

私は何も見逃していなかったと思います。

于 2012-11-29T07:21:36.830 に答える
0

dojo.positiondojo V1.7を使用できるので。

与えられた例で:

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

この呼び出しにはが必要dojo/dom-geometryです。

それがうまくいったかどうか教えてください。

于 2012-11-26T20:11:56.153 に答える
0

これは可能な解決策の1つです

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);
    });
于 2012-11-29T07:29:56.750 に答える