调用canvas.getContext("webgl");
让Chrome触发“Rats!WebGL遇到障碍”消息,并且不会提供任何信息。我该如何解决这个问题?
我没有收到canvas.getContext("webgl")
返回null
以外的其他信息我甚至不知道如果我自己没有使用该设备,则Chrome会失败并显示占用手机屏幕25%的消息因为这不会触发错误。
这是一个函数的一部分,该函数应该通过创建新画布并获取webGL上下文来测试WebGL是否受支持:
var webGLIsSupported = function() {
if (typeof window.webGLIsSupported !== 'undefined') {return window.webGLIsSupported;}
var canvas = $('<canvas></canvas>')[0];
var ctx;
try {
ctx = canvas.getContext('webgl'); // <- this triggers the message, and fails
}
catch (e) {
window.webGLIsSupported = false;
return false;
}
window.webGLIsSupported = !!ctx;
return window.webGLIsSupported;
};
哪里可以开始获取有关哪些内容无效的信息?没有任何日志是非常令人沮丧的。
将canvas.getContext('webgl')
更改为canvas.getContext('experimental-webgl')
没有任何区别。
我在Samsung S6上运行Chrome 49.0.2623.105。
答案 0 :(得分:1)
正如您所注意到的,检查null
是一种了解上下文创建是否成功的方法。但是当你只检查它时,没有关于“为什么”的信息。
实际上有一个事件应该用于此目的:webglcontextcreationerror
它包含一个statusMessage
属性,它可以为您提供有关创建上下文失败的“原因”的更多信息。
来自MDN:
canvas.addEventListener("webglcontextcreationerror", function(e) {
console.log(e.statusMessage || "Unknown error");
}, false);
但是,我不知道你能否对你得到的信息采取任何行动......