for ループで html2canvas スクリプトを実装しようとすると、少し問題が発生します。
データの配列を使用して要素のグループのスタイルを変更し、コンテナの div をキャンバスとしてキャプチャし、それを画像に変換し、それをドキュメントの本文に追加してから次の処理に進む Javascript 関数を作成しています。配列のインデックス。
問題が発生している部分は、ループの最後にあります。
html2canvas(document.getElementById("background"), {
onrendered: function(canvas) {
var imgdata = canvas.toDataURL("image/png");
var obj = document.createElement("img");
obj.src=imgdata;
document.body.appendChild(obj);
}
});
スクリプトを段階的に実行することで、 for ループの次の反復に進む前にキャンバスがレンダリングされるのを待っていないことがわかりました。これにより、キャプチャしようとしている要素が変化しますが、すべて画像はまったく同じようにレンダリングされます (配列の最終インデックスと同じです)。
キャンバスのレンダリング中にスクリプトを 1 秒間遅らせる方法はありますか? 私は使用してみましたがsetTimeout()
、スクリプトを遅らせる他の方法を見つけることができないようですonrendered
。コードの一部がどのように機能するのかよくわかりません。
私の説明が不明確な場合は、すぐに適切な例をいくつか用意します。