Несколько экземпляров Autodesk Forge Viewer

1

Я пытаюсь иметь несколько экземпляров 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;
  }
Теги:
autodesk-forge
three.js
autodesk-viewer

2 ответа

1
Лучший ответ

Я боюсь, что нет возможности приостановить инициализацию зрителя. Его можно инициализировать только с холстом ненулевого размера. Вы можете попытаться скрыть несколько экземпляров зрителя, используя z-index вместо display:none чтобы все они получили непустой холст и были правильно инициализированы.

  • 0
    Спасибо, я этого боялась. В конце концов, я решил переместить содержимое вкладки за экран, что, на мой взгляд, не лучшее решение, но самое быстрое в моем случае. Смотрите мое редактирование выше.
1

Кроме того, z-index настройки visibility на hidden также хорошо работает:

#MyViewerDiv {visibility: hidden;}

Рабочий код: https://jsfiddle.net/dukedhx/bp9dycrt/

  • 0
    Благодарю. Проблема в моем случае с visibility: hidden заключается в том, что мне нужно было установить display: block first на все содержимое вкладки, которое перепуталось со всем макетом страницы. Более быстрое решение для меня состояло в том, чтобы переместить весь контент за экран - см. Мое редактирование выше.
  • 0
    Но разве содержание вашей вкладки уже не позиционировано и не снято? Не следует связываться с другими элементами независимо от их отображаемого значения. См. Jsfiddle.net/dukedhx/epk9o40g
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню