当小部件的显示动画结束时,我正在尝试获取我的 containerNode 的尺寸,它是我的 dojox 对话框小部件的成员。
this.dialog = new dojox.widget.Dialog( { sizeToViewport: true });
var dialogContainer = this.dialog.containerNode;
我应该使用哪个函数或属性?
当小部件的显示动画结束时,我正在尝试获取我的 containerNode 的尺寸,它是我的 dojox 对话框小部件的成员。
this.dialog = new dojox.widget.Dialog( { sizeToViewport: true });
var dialogContainer = this.dialog.containerNode;
我应该使用哪个函数或属性?
这是可能的解决方案之一
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);
});
因为dojo V1.7
你可以使用dojo.position。
使用给定的示例:
var position = dojo.position(dialogContainer);
var dimensions = {
width: position.w,
height: position.h
}
此调用需要dojo/dom-geometry
.
让我知道它是否有效请..
好的,现在第二次尝试。作为实验一点点,并没有导致解决方案。一个讨厌的小解决方法怎么样?
研究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);
希望我没有错过任何东西。