我在Android中使用WebView中的WebGL。为了检测WebGL是否受支持,我使用的是this function。
Android KitKat设备没有启用WebGL支持,如各处所述。但是,在我的4.4.2测试设备中,检测功能返回true,当从WebView调用http://webglreport.com时,它也表示支持WebGL1。
不出所料,没有任何东西被渲染出来。因此,如果WebGL不起作用,我想避免使用页面的WebGL版本。
有什么方法可以更好地检测webGL吗?或者我应该只说“如果Android< 5,甚至不试图检查是否支持WebGL,因为它可能是谎言”。
答案 0 :(得分:1)
我有过与Android设备类似的体验。通过将Android浏览器列入黑名单解决(如果我理解正确的话,还可以查看网页浏览量)。更新的Chrome通常可以正常使用。
答案 1 :(得分:0)
根据@ kirill-dmitrenko的回答,但是避免解析用户代理,我已将所有不支持“let”构造(http://caniuse.com/#feat=let)的浏览器列入黑名单,这些浏览器虽然不相关,但似乎得到所有人的支持支持webgl的现代浏览器:
var supported;
try {
var canvas = document.createElement('canvas');
supported = !! window.WebGLRenderingContext && (canvas.getContext('webgl') || canvas.getContext('experimental-webgl'));
} catch(e) { supported = false; }
try {
// let is by no means required, but will help us rule out some old browsers: http://caniuse.com/#feat=let
eval('let foo = 123;');
} catch (e) { supported = false; }
if (supported === false) {
console.log("WebGL is not supported");
}