Javascript KineticJS/Canvas使safari在使用多层时在ipad上崩溃?
这让我快发疯了。如果我运行下面的简单HTML,它可以在我的IPad2(A1396)上运行,但不能在我的iPad3(A1416)上运行。每当我将iPad3从纵向旋转到横向时,Safari就会崩溃。我觉得在增加的层数和(每层的)宽度/高度之间有关系Javascript KineticJS/Canvas使safari在使用多层时在ipad上崩溃?,javascript,ipad,safari,kineticjs,Javascript,Ipad,Safari,Kineticjs,这让我快发疯了。如果我运行下面的简单HTML,它可以在我的IPad2(A1396)上运行,但不能在我的iPad3(A1416)上运行。每当我将iPad3从纵向旋转到横向时,Safari就会崩溃。我觉得在增加的层数和(每层的)宽度/高度之间有关系 身体{ 边际:0px; 填充:0px; } var阶段=新的动力学阶段({ 容器:'容器', 宽度:580, 身高:400 }); var NrOfAttribute=50; 对于(var AttributeNo=0,NrOfAttribute;Att
身体{
边际:0px;
填充:0px;
}
var阶段=新的动力学阶段({
容器:'容器',
宽度:580,
身高:400
});
var NrOfAttribute=50;
对于(var AttributeNo=0,NrOfAttribute;AttributeNo
这是一个bug还是IPad上的内存问题?任何帮助都将不胜感激,因为我真的需要这个工作
谢谢
编辑:我刚刚测试过对“常规”画布做同样的操作,如果我增加层数,它也会崩溃(因此它似乎不是特定于动力学的)。如果您增加足够的层数,它也会在Ipad2上崩溃。这可能不是您的选项,但是您是否需要为每个矩形单独设置一个层,或者是否可以将它们全部放在同一层中?我怀疑这将有助于减少内存使用,因为最终不会有50个画布元素。您可以为每个Rect指定一个唯一的
名称
,然后仍然可以使用类似Rect=layer.find('.{name}');#的东西单独操作它们用rect做点什么
我没有解决方案,但我可以确认它与内存有关。在我的iPad(A1430)上,Safari在横向模式下启动大约50层的动态页面时,会出现内存不足的警告,其中大部分是不可见的。
<!DOCTYPE HTML>
<html>
<head>
<style>
body {
margin: 0px;
padding: 0px;
}
</style>
</head>
<body>
<div id="container"></div>
<script src="http://d3lp1msu2r81bx.cloudfront.net/kjs/js/lib/kinetic-v5.0.2.min.js"></script>
<script defer="defer">
var stage = new Kinetic.Stage({
container: 'container',
width: 580,
height: 400
});
var NrOfAttribute = 50;
for (var AttributeNo = 0, NrOfAttribute; AttributeNo < NrOfAttribute; AttributeNo++) {
var layer = new Kinetic.Layer();
var rect = new Kinetic.Rect({
x: 20*AttributeNo,
y: 20*AttributeNo,
width: 50,
height: 10,
fill: 'green',
stroke: 'black',
strokeWidth: 4
});
// add the shape to the layer
layer.add(rect);
// add the layer to the stage
stage.add(layer);
}
</script>
</body>
</html>