Получение ошибки webGL в программе просмотра Autodesk

Я получаю сообщение об ошибке: Uncaught TypeError: Cannot read property '__webglFramebuffer' of null

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


person Apurva Bhavsar    schedule 27.07.2017    source источник
comment
какую версию вы используете?   -  person Augusto Goncalves    schedule 29.07.2017
comment
Я использую:‹script src=developer. api.autodesk.com/viewingservice/v1/viewers/.*›‹/script› ‹script src=developer.api.autodesk.com/viewingservice/v1/viewers/.*›‹/script›   -  person Apurva Bhavsar    schedule 29.07.2017
comment
спасибо, я бы сначала порекомендовал использовать более новую версию, сейчас у нас версия 2.15, и мы изучим эту проблему.   -  person Augusto Goncalves    schedule 31.07.2017
comment
Я думаю, проблема в вызовах API. На каждой странице есть вкладка скрипт и ссылка для API.   -  person Apurva Bhavsar    schedule 01.08.2017
comment
Я использую версию 2.15, все еще получаю ту же ошибку.   -  person Apurva Bhavsar    schedule 04.08.2017
comment
мы изучаем это, я могу получить это, если продолжу изменять размер браузера... можете ли вы пояснить, как вы это получаете?   -  person Augusto Goncalves    schedule 05.08.2017


Ответы (1)


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

Просто поместите некоторый обработчик очистки, вызываемый при переходе со страницы просмотра, в зависимости от того, какую версию angular вы используете, вы должны легко найти, как это сделать, а затем поместите следующий код для очистки просмотра:

// assumes this.viewer contains your viewer, your code might be different ...
// make sure viewer has been created
if (this.viewer) {

  // I added this to handle some specific cases
  if(this.viewer.impl.selector) {

    this.viewer.tearDown()
    this.viewer.finish()
    this.viewer = null
  }
} 
person Philippe    schedule 05.08.2017