почему getOffsetWidth() и getElement().getClientWidth() возвращают 0 для виджета в GWT?

Я использую RaphaelGWT для рисования фигур с помощью базовой библиотеки RaphaelJS. Оба проекта прекрасны. Однако на какое-то время я застрял в вопросе о том, что текстовые объекты в Raphael по умолчанию отображаются по центру.

Я попытался создать один текстовый объект и позволить ему центрироваться по умолчанию, затем измерить его ширину, чтобы настроить положение для второго текстового объекта, а затем удалить первый. Но я не могу получить ширину исходного текстового объекта.

К вашему сведению, в RaphaelGWT используемые объекты Shape расширяют Widget. Итак, я пробовал getAbsoluteLeft(), getElement().getAbsoluteRight(), getOffsetWidth(), getElement().getClientWidth(). getAbsoluteLeft() — единственный, который возвращает то, что я ожидал. getAbsoluteRight() возвращает то же значение, что и getAbsoluteLeft(), а getOffsetWidth() и getElement().getClientWidth() возвращают 0.

Почему?

К вашему сведению, я вычислил ширину из исходного значения x, использованного для создания Text Shape (x затем стал центром), и getAbsoluteLeft(), которое фактически вернуло ожидаемое значение.


person user26270    schedule 29.09.2010    source источник
comment
Вы уверены, что вызываете эти методы после добавления виджета в DOM?   -  person Igor Klimer    schedule 30.09.2010
comment
да, я хотел упомянуть об этом в исходном посте, предполагая, что меня спросят об этом; getAbsoluteLeft() не вернул бы действительное значение, если бы оно не было добавлено в DOM, не так ли?   -  person user26270    schedule 30.09.2010


Ответы (1)


Элемент должен быть видимым, чтобы функция getOffsetWidth() возвращала правильные значения.

person Eduard Wirch    schedule 16.12.2010