dojox对话框小部件中的containerNode的维度

时间:2012-11-26 10:55:13

标签: javascript dojo

我正在尝试获取我的容器节点的尺寸,这是我的dojox对话框小部件的成员,当小部件显示动画结束时。

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

我应该使用哪种功能或属性?

3 个答案:

答案 0 :(得分:0)

dojo V1.7后,您可以使用dojo.position

使用给定的例子:

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

此通话需要dojo/dom-geometry

如果有效,请告诉我..

答案 1 :(得分:0)

好的,现在第二次尝试。作为一点实验,没有导致解决方案。一个讨厌的小解决方法怎么样?

研究sizeToViewPort我发现的dojox.widget.dialog - 选项,默认情况下,padding 35px ViewPort。因此,如果你知道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);

希望我没有错过任何东西。

答案 2 :(得分:0)

这是可能的解决方案之一

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