在Google Chrome 29中解决Canvas崩溃的问题

时间:2013-08-27 18:44:57

标签: javascript html5 google-chrome canvas

有没有人知道如何防止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

但我正在寻找是否有人找到或可以想到解决这个问题。

1 个答案:

答案 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接近最小事件循环时间,因此这适用于大多数浏览器。