Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/436.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript KineticJS/Canvas使safari在使用多层时在ipad上崩溃?_Javascript_Ipad_Safari_Kineticjs - Fatal编程技术网

Javascript KineticJS/Canvas使safari在使用多层时在ipad上崩溃?

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

这让我快发疯了。如果我运行下面的简单HTML,它可以在我的IPad2(A1396)上运行,但不能在我的iPad3(A1416)上运行。每当我将iPad3从纵向旋转到横向时,Safari就会崩溃。我觉得在增加的层数和(每层的)宽度/高度之间有关系


身体{
边际: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>