キャンバスの操作準備ができたことを検出する方法は?
-
06-07-2019 - |
質問
Xキャンバス要素をjQueryを介してページに動的に追加しています:
$(document).ready(function() {
for(i=0;i<4;i++) {
var can = $(document.createElement("canvas"))
.attr("id","table"+i)
.addClass("table")
.attr("width",640)
.attr("height",480)
.appendTo('#container');
}
//...
});
.append()
も .appendTo()
も、すぐに発生することになっているため、コールバックはありません。残念ながら、canvas要素に関する何かはすぐには発生しません。
キャンバス要素の1つで .getContext( '2d')
にアクセスすると、「getContext is a not function。」で失敗します。これはFF 3.5とChromeで発生します。
任意のイベントハンドラーを .click()
などのキャンバス要素に割り当て、そのイベントで .getContext()
を使用すると、完全に機能します。
キャンバスを操作する準備ができていることを効率的に判断するにはどうすればよいですか?
解決
can
変数で getContext()
を使用できるとは思わない。
それを行う場合は、 can [0] .getContext()
を試してください。これにより、jQueryではなく要素オブジェクトが実際に取得されます。
他のヒント
最初に、いずれかのブラウザでこれに関するバグレポートがあるかどうかを確認します。
一方、setIntervalまたは単にループを使用して、.getContext(括弧なし)が真であるかどうかを確認し、それ以降にのみ進むことができます(ある程度の制限があるため、ブラウザを失速させないでください)何かがうまくいかなかったり、ユーザーがブラウザにその機能を持っていない場合、無限ループになります。)
キャンバスのDOMReadyイベントに関数を添付できます。
所属していません StackOverflow