我正在尝试获取我的容器节点的尺寸,这是我的dojox对话框小部件的成员,当小部件显示动画结束时。
this.dialog = new dojox.widget.Dialog( { sizeToViewport: true });
var dialogContainer = this.dialog.containerNode;
我应该使用哪种功能或属性?
答案 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);
});