Ich versuche, die Abmessungen meines containerNode abzurufen, der Mitglied meines Dojox-Dialog-Widgets ist, wenn die angezeigte Animation des Widgets endet.
this.dialog = new dojox.widget.Dialog( { sizeToViewport: true });
var dialogContainer = this.dialog.containerNode;
Welche Funktion oder Eigenschaft soll ich verwenden?
3 Antworten
Dies ist eine der möglichen Lösungen
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);
});
Ok, 2. Versuch jetzt. Da ein wenig experimentieren, führte dies nicht zu einer Lösung. Wie wäre es mit einer bösen kleinen Problemumgehung?
Bei der Untersuchung der Option sizeToViewPort
- der dojox.widget.dialog
habe ich herausgefunden, dass die ViewPort
standardmäßig eine padding
von 35px
enthält. Wenn Sie also die Größe des viewport
kennen, können Sie die Abmessungen des Dialogfelds ermitteln, indem Sie die Polsterung davon abziehen.
Vielleicht hilft das:
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);
Hoffe ich habe nichts verpasst.
Seit dojo V1.7
können Sie dojo.position verwenden.
Mit dem gegebenen Beispiel:
var position = dojo.position(dialogContainer);
var dimensions = {
width: position.w,
height: position.h
}
Dieser Aufruf erfordert dojo/dom-geometry
.
Lassen Sie mich wissen, ob es funktioniert hat.