На этой странице слишком много активных контекстов WebGL, самый старый контекст будет утерян.[dedup.min.js] - PullRequest
0 голосов
/ 23 сентября 2018

Я получаю эту ошибку только в браузере Safari.Не знаю почему.Я использую AngularJS 1.3.x.click here for image

Итак, как мне определить, какие библиотеки могут использовать это.И почему только в сафари я получаю эту ошибку?Есть ли способ через JS включить или отключить WebGL?

1 Ответ

0 голосов
/ 23 сентября 2018

Поместите это в верхнюю часть вашего HTML?

<script>
HTMLCanvasElement.prototype.getContext = (function(origFn) {
  var bannedTypes = {
    "webgl": true,
    "webgl2": true,
    "experimental-webgl":, true,
  };
  return function() {
    var type = arguments[0];
    return bannedTypes[type]
       ? null
       : origFn.apply(this, arguments);
  };
}(HTMLCanvasElement.prototype.getContext));
</script>

Пока это появляется перед любыми другими сценариями, оно должно блокировать webgl.

Приведенные выше изменения заменяют функцию someCanvas.getContext так что, когда какой-то другой JavaScript пытается создать контекст «webgl», он возвращает null, что означает, что создание контекста не удалось.В противном случае, если JavaScript запрашивает другой тип контекста, он вызывает оригинальную функцию getContext.

Пока этот скрипт выполняется первым, он не должен позволять другим JavaScript на странице создавать контекст webgl.Это не помешает JavaScript в iframes создавать контексты.Вам нужно будет добавить одно и то же решение к каждому iframe.

...