有没有人知道如何防止HTML5画布在Google Chrome 29中崩溃。
经过多次重绘后,Windows Chrome 29(不是28或30)上的画布一直崩溃。一种简单的重现方式: 1.使用Microsoft Windows计算机(Linux / MAC OS X上不会出现此问题) 2.转到:http://www.html5canvastutorials.com/labs/html5-canvas-kineticjs-drag-and-drop-stress-test-with-1000-shapes/ 3.单击刷新
我将此问题发布到Google的Chromium bug跟踪器: https://code.google.com/p/chromium/issues/detail?id=280153
但我正在寻找是否有人找到或可以想到解决这个问题。
答案 0 :(得分:0)
我无法通过Chrome 29或Canary 31(Windows)崩溃。
但至于解决方法:
尝试通过将繁重且耗时的任务拆分为部分来分割浏览器上的负载。可以使用setTimeout
调用每个部分。
这将为浏览器提供一些时间来呼吸#34;并在事件队列中执行其他事件,使浏览器满意。
function heavyTask(callback) {
var dataForTask;
function segment1() {
/* execute one part of heavy task - do something with dataForTask */
setTimeout(segment2, 11);
}
function segment2() {
/* execute one part of heavy task - do something with dataForTask */
setTimeout(segment3, 11);
}
function segmentN() {
/* execute one part of heavy task - do something with dataForTask */
/// DONE!
callback();
}
}
理论上,您可以使用0
的值来延迟setTimeout
,但这并不总是有效(取决于浏览器)。值11接近最小事件循环时间,因此这适用于大多数浏览器。