ウィジェットの表示アニメーションが終了したときに、dojoxダイアログウィジェットのメンバーであるcontainerNodeのディメンションを取得しようとしています。
this.dialog = new dojox.widget.Dialog( { sizeToViewport: true });
var dialogContainer = this.dialog.containerNode;
どの関数またはプロパティを使用する必要がありますか?
ウィジェットの表示アニメーションが終了したときに、dojoxダイアログウィジェットのメンバーであるcontainerNodeのディメンションを取得しようとしています。
this.dialog = new dojox.widget.Dialog( { sizeToViewport: true });
var dialogContainer = this.dialog.containerNode;
どの関数またはプロパティを使用する必要がありますか?
OK、2回目の試行です。少し実験してみましたが、解決策にはなりませんでした。厄介な小さな回避策はどうですか?
iのsizeToViewPort
-optionを調べた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);
私は何も見逃していなかったと思います。
dojo.positiondojo V1.7
を使用できるので。
与えられた例で:
var position = dojo.position(dialogContainer);
var dimensions = {
width: position.w,
height: position.h
}
この呼び出しにはが必要dojo/dom-geometry
です。
それがうまくいったかどうか教えてください。
これは可能な解決策の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);
});