Поместите это в верхнюю часть вашего 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.