javascript – 抑制“大鼠! WebGL打了一个障碍.“Google Chrome中的错误栏

前端之家收集整理的这篇文章主要介绍了javascript – 抑制“大鼠! WebGL打了一个障碍.“Google Chrome中的错误栏前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我最近开始在我正在开发的网站上使用WebGL.它被用作增强功能,如果WebGL不受支持或出现错误,则网站将返回到画布呈现.

不幸的是,当Google Chrome出现WebGL时,会出现一条错误消息栏.用户与之互动之前,此栏不会消失.如果他们重新加载或导航到不同的页面,该信息将在下次网站尝试使用WebGL时重新出现.

在我的网站的情况下,这意味着WebGL错误消息永远不会消失,因为每个页面都尝试使用WebGL.一旦出现错误,Chrome将不会在同一个网站上再次使用WebGL,直到用户告诉它重新加载,因此连续错误消息并不表示持续错误,只是连续尝试使用WebGL.

一旦发生WebGL错误,该对话框可以通过运行:

document.createElement('canvas').getContext('experimental-webgl');

这不会引起任何异常,我的.onerror方法在canvas元素上没有被调用.

我无法深入调查这一点,因为我无法可靠地重现WebGL错误. (即使我可以在我的电脑上再现一个,可能不会对其他人重现).

对于依赖于WebGL的网站而言,这种行为是合理的,但是我的这个网站不是这样,所以这个消息只是让用户分心和混乱.

有什么办法来抑制这个错误信息吗?一旦发生错误,我不介意忽略WebGG禁用的忽略行为.

解决方法

如果你想忽略这个例外,那么以下就足够了.
canvas.addEventListener("webglcontextlost",function(e) { e.preventDefault(); Stopdrawing(); },false);

如果要重试加载webgl上下文

canvas.addEventListener("webglcontextrestored",function (event) {initializeResources();  },false);

编辑:

如果要测试上下文是否正确处理,请使用webgl上下文中的WEBGL_lose_context扩展名.

gl.getExtension("WEBGL_lose_context").loseContext()
gl.getExtension("WEBGL_lose_context").restoreContext()

猜你在找的JavaScript相关文章