Вам нужно будет вставить элемент в DOM, а затем измерить его.Лучше всего вставить его там, где он действительно будет, когда вы закончите с ним (что вы делаете, поскольку вы используете Ajax.Updater
).[Если по какой-то причине вы хотите сначала измерить его, вы можете сделать это, добавив его со стилем position: absolute
и присвоив ему большое отрицательное значение left
(например, left: -10000px
), чтобы оставить его вне страницы, затемизмерьте его, затем переместите в нужное вам место (удалив большую left
и т. д.), но остерегайтесь изменения размера из-за стилей и других факторов, связанных с его положением в DOM.]
Prototype вызывает все обычные обратные вызовы Ajax, но обратите внимание, что onSuccess
называется до обновления выполняется.Чтобы получить обратный вызов после , либо используйте onComplete
(но учтите, что он также вызывается при сбоях), либо используйте setTimeout
из onSuccess
.
С учетом вашего кода икомментарий «получить высоту из первого возвращенного div», используя onComplete
, будет выглядеть следующим образом:
onComplete: function() {
var firstDiv, height;
firstDiv = $("myDiv").down("div");
if (firstDiv) {
height = firstDiv.getHeight();
// ...
}
}
Живой пример
Если вы предпочитаете onSuccess
+setTimeout
подход (но учтите, что между добавлением элемента и его измерением будет более длительная задержка):
onSuccess: function() {
setTimeout(function() {
var firstDiv, height;
firstDiv = $("myDiv").down("div");
if (firstDiv) {
height = firstDiv.getHeight();
// ...
}
}, 0); // Won't really be 0ms, but not much longer
}
Живой пример