我仅在Safari浏览器上遇到了这个严重的错误。不知道为什么。 我正在使用AngularJS1.3.x。
因此,我如何检测哪些库可能正在使用此库。 为什么只在野生动物园中出现此错误? 是否可以通过JS启用或禁用WebGL?
答案 0 :(得分:0)
将其放在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上下文。它不会阻止iframe中的JavaScript创建上下文。您需要为每个iframe添加相同的解决方案。