Pjax/Ajax-фрагмент, возвращающий width/offsetWidth 0 при загрузке
Встречаемся с трудной ошибкой с фрагментами Pjax на следующем сайте:
https://dl.dropboxusercontent.com/u/65752410/map.html
В настоящее время, щелкая ссылки "расписание" и "карта" в навигационной панели, вы загружаете фрагменты страницы через Pjax вместе с некоторым условным JavaScript, предоставленным requirejs.
На странице "карта" при загрузке первой страницы будет вычислена ширина каждого элемента с классом .side-panel
правильно. Однако последующие загрузки вернут ширину 0, несмотря на то, что выбранный элемент присутствует в DOM, когда запрашивается ширина.
Чтобы воспроизвести ошибку:
- дождитесь загрузки карты
- нажмите на ссылку "расписание", чтобы загрузить страницу расписания
- нажмите на ссылку "карта", чтобы загрузить страницу карты. Ширина каждого
.side_panel
будет зарегистрирован как 0.
Если вы оставите консоль открытой во время этого теста, вы увидите, что при загрузке страницы регистрируется правильная ширина, страница расписания динамически загружается на втором шаге, а затем страница карты загружается с .side_panel
элементы в DOM, но возвращающие ширину 0.
1 ответ
Если вы посмотрите на консоль, панель div не имеет offsetParent
, это означает, что он еще не был вставлен в DOM, что будет означать, что ширина будет 0.