Я пытаюсь иметь несколько экземпляров Autodesk Forge Viewer (v6.2), запущенных на моей странице, но скрытых в вкладках.
Когда пользователь переключает вкладки, он будет скрывать и показывать зрителю загруженную модель.
Хотя у меня есть эта работа, любые скрытые экземпляры, которые загружают модель, разбивают события (например, resize event), вызывая ошибку, например:
VM19014 viewer3D.min.js:53 Uncaught TypeError: Cannot read property '__webglFramebuffer' of null
at k.initFrameBufferMRT (VM19014 viewer3D.min.js:53)
Я посмотрел на .tearDown()
и finish()
но они, похоже, полностью разгружают модель в средстве просмотра, замедляя опыт для пользователя.
Есть ли способ приостановить просмотрщик, если он не отображается?
Редактировать:
Я принял ответ ниже, потому что это правильное решение, и, вероятно, я поеду, если бы переделал страницу.
В конце концов, я пошел по другому обходному пути, где я переместил весь контент вкладки за кадром, чтобы холст все еще жил в DOM, и он не пересказывает мой контент:
.tab-content {
top: -9999px;
left: -9999px;
position: absolute;
display: block !important;
}
Я боюсь, что нет возможности приостановить инициализацию зрителя. Его можно инициализировать только с холстом ненулевого размера. Вы можете попытаться скрыть несколько экземпляров зрителя, используя z-index
вместо display:none
чтобы все они получили непустой холст и были правильно инициализированы.
Кроме того, z-index
настройки visibility
на hidden
также хорошо работает:
#MyViewerDiv {visibility: hidden;}
Рабочий код: https://jsfiddle.net/dukedhx/bp9dycrt/
visibility: hidden
заключается в том, что мне нужно было установить display: block
first на все содержимое вкладки, которое перепуталось со всем макетом страницы. Более быстрое решение для меня состояло в том, чтобы переместить весь контент за экран - см. Мое редактирование выше.