解决Canvas在Google Chrome 29中崩溃的问题
Work around for Canvas crashing in Google Chrome 29
有人知道如何防止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.点击刷新
我在谷歌的Chromium bug跟踪器上发布了这个问题:https://code.google.com/p/chromium/issues/detail?id=280153
但我正在寻找是否有人找到或能想出解决这个问题的办法。
我没能在Chrome 29或Canary 31(Windows)上崩溃。
但关于解决方案:
尝试通过将繁重且耗时的任务拆分为多个部分来分割浏览器上的负载。每个部分都可以用setTimeout
调用。
这将给浏览器一些时间来"呼吸"并执行事件队列中的其他事件,这会让浏览器感到高兴。
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接近最小事件循环时间,因此这应该适用于大多数浏览器。
相关文章:
- 在指令控制器中使用$attrs时出现问题
- 将PHP变量传递给jQuery时遇到问题
- Canvas Html5绘图应用程序,移动画布会导致重大问题
- 引导程序导航栏崩溃问题
- Bootstrap Accordion崩溃中的问题
- 试图修复一个倒计时计时器问题,该问题导致计时器运行,然后在使用Javascript时崩溃约10秒
- AngularJs的ui.bootstrap问题-崩溃不起作用
- iOS7 钛矿崩溃问题
- 我的安卓应用程序崩溃了,但我看不出出了什么问题
- 引导响应导航崩溃的问题
- 离子应用程序崩溃问题
- 解决Canvas在Google Chrome 29中崩溃的问题
- 引导程序崩溃问题
- 常见问题解答Accordian点击崩溃
- 如何调试Angularjs的ng-route和Threejs的崩溃/问题
- iPad浏览器崩溃的问题(在下载约7 MB的图像时)是否也适用于音频文件?
- 粘页脚不能水平滚动的问题,以及当窗口大小崩溃时主要内容聚集的问题
- Bootstrap扩展崩溃问题
- 非常奇怪的IE崩溃问题与样式表javascript对象
- Alfresco共享网页预览崩溃的问题