3

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

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

我应该使用哪个函数或属性?

4

3 回答 3

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);
    });
于 2012-11-29T07:29:56.750 回答
0

因为dojo V1.7你可以使用dojo.position

使用给定的示例:

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

此调用需要dojo/dom-geometry.

让我知道它是否有效请..

于 2012-11-26T20:11:56.153 回答
0

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

研究sizeToViewPort- 选项dojox.widget.dialog我发现,默认情况下有一个padding. 因此,如果您知道 的大小,则可以通过从中减去填充来获得对话框的尺寸。35pxViewPortviewport

所以也许这有帮助:

    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 回答