2013-08-21 5 views
12

最近私が開発しているサイトでWebGLを使用し始めました。 WebGLがサポートされていないか、エラーがある場合、この機能は拡張機能として使用され、キャンバスレンダリングに戻ります。「Rats!WebGLが妨害を受けた」を抑制するGoogle Chromeのエラーバー

残念ながら、Google ChromeでWebGL例外が発生すると、エラーメッセージバーが表示されます。このバーは、ユーザーが操作するまで消えません。リロードしたり別のページに移動すると、次回WebGLを使用しようとしたときにメッセージが再び表示されます。私のサイトの場合は

、これは、各ページはWebGLのを使用しようとするので、WebGLのエラーメッセージが消えることはありませんことを意味します。エラーが発生すると、ユーザーがReloadになるまでChromeは同じサイトでWebGLを再び使用しないため、連続エラーメッセージは実際に連続エラーを示さず、WebGLを継続的に使用しようとします。


WebGLのエラーが発生すると、このダイアログは単に実行することにより、そのサイト上で再生することができます。

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

これは、任意の例外を発生せず、canvas要素の私の.onerror方法はありませんでしたと呼ばれる。

WebGLエラーを確実に再現できないため、これを深く調査することはできませんでした。 (私は自分のコンピュータ上の1を再現できたとしても、それは他人に再現できない場合があります。)


この動作は、WebGLのに頼っていたサイトのために合理的であるが、鉱山はないので、メッセージはただでありますユーザーに気を散らせ、混乱させます。

このエラーメッセージを抑制する手段はありますか? エラーが発生するとWebGLを無効にする動作を無視します。

+0

多くのサイトには、SOキャリアやCNBCのような問題があります。それは私のサムスンs3で起こるが、私のモチーフではないRAZR maxx hd – Bob

答えて

6

例外を無視する場合は、次の値で十分です。

canvas.addEventListener("webglcontextlost", function(e) { e.preventDefault(); Stopdrawing(); }, false); 

あなたはWebGLのコンテキストをロード

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

EDIT再試行する場合:

あなたはコンテキストが正しく処理されますかどうかをテストしたい場合は、WebGLの上WEBGL_lose_context拡張の使用を作りますコンテキスト。

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

ありがとう、私はエラーを再現する次回そのショットを与えるだろう。 –

+3

私はこの作品を作っていないようです。OpenGLはまだ定期的に私にRATSの例外を与えているようです。 – pip

2

私はこの問題を解決するために年を取った - それはラット! Chromeを使用しているときに3Dコンテキストを持つキャンバスのサイズを変更すると、エラーが発生しました。解決策は、リスナーを介してサイズ変更をキャッチし、その時点でキャンバスとコンテキストを再作成することでした。希望が役立ちます。

関連する問題