2016-12-06 158 views
0

我正在使用Android WebView WebGL。爲了檢測是否支持WebGL,我使用了this functionWebGL檢測爲支持時,它實際上不支持

Android KitKat設備沒有啓用WebGL支持,無處不在。但是,在我的4.4.2測試設備中,檢測功能返回true,當從WebView調用http://webglreport.com時,它也表示支持WebGL1。

不出所料,沒有任何東西被渲染。因此,如果WebGL不起作用,我想避免使用WebGL版本的頁面。

有沒有什麼辦法可以更好地檢測webGL?或者我應該說「如果Android < 5,甚至不嘗試檢查是否支持WebGL,因爲它可能存在」。

+0

哪個設備似乎誤報? –

+0

在這種情況下,它是嘉魚S2手機。 –

回答

1

我對Android設備有類似的體驗。通過將Android瀏覽器列入黑名單來解決(並且,如果我理解正確,也可以使用Web視圖)。更新的Chrome通常工作正常。

+0

謝謝。我無法真正將WebView黑名單,因爲目標是使用WebView的混合應用程序。 –

+1

可能有另一種方法。嘗試渲染小型簡單場景並從幀緩衝區中讀回。如果顯示正常,那麼應用程序可以繼續使用WebGL代碼路徑。否則,顯示使用回退的錯誤消息。 –

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"); 
}