Javascript stroke()在mac上最多占用8,7秒,但在任何其他浏览器中都不到1毫秒

Javascript stroke()在mac上最多占用8,7秒,但在任何其他浏览器中都不到1毫秒,javascript,macos,performance,canvas,safari,Javascript,Macos,Performance,Canvas,Safari,我用画布创建了8幅图像(彩色谷歌地图标记): 这是一个引起问题的代码: ctx.beginPath() ctx.moveTo( lw, h/3 ) // Left ctx.lineTo( w/2, lw ) // Top ctx.lineTo( w - lw, h/3 ) // Right ctx.lineTo( w/2, h - lw ) // Bottom ctx.closePath() ctx.fill() // conditional dashe

我用画布创建了8幅图像(彩色谷歌地图标记):

这是一个引起问题的代码:

ctx.beginPath()
ctx.moveTo( lw, h/3 )       //  Left
ctx.lineTo( w/2, lw )       //  Top
ctx.lineTo( w - lw, h/3 )   //  Right
ctx.lineTo( w/2, h - lw )   //  Bottom
ctx.closePath()
ctx.fill()
// conditional dashed line border (see in codepen L31 - L41)
ctx.fill()
ctx.stroke()    //  This call takes up to 8.7sec (on MAC safari only)
我试图将代码缩小到问题的范围,但只是为了确保我做了一个正确的选择。
证明它在MAC上不起作用


如何让它在MAC电脑上像在PC电脑上一样快速工作?

我发现了问题所在,不知道是否应该报告…
问题是,Mac上的Firefox(甚至可能在其他浏览器上)在
ctx.setLineDash([0])
上有问题,其他浏览器在其中没有零的问题,但是Firefox在第一次笔划调用时有问题


“正确”的方法是
ctx.setLineDash([])

我发现了什么问题,不知道是否应该报告…
问题是,Mac上的Firefox(甚至可能在其他浏览器上)在
ctx.setLineDash([0])
上有问题,其他浏览器在其中没有零的问题,但是Firefox在第一次笔划调用时有问题


“正确”的方法是
ctx.setLineDash([])

那么问题是什么呢?如何让它在MAC上像在PC上一样快速工作?附言:增加了编辑,认为这是显而易见的,但可能不是…可能是机器和浏览器的依赖。你试过一个以上的mac和一个以上的浏览器吗???如果只是机器或浏览器,那么您应该为这些设置创建一个替代解决方案。对于信息,您的代码笔会在osx 10上崩溃我的FF 45。9@Kaiido你是对的,这是Firefox而不是Safari,我已经找到了解决方案。那么问题是什么?如何让它在MAC上像在PC上一样快速工作?附言:增加了编辑,认为这是显而易见的,但可能不是…可能是机器和浏览器的依赖。你试过一个以上的mac和一个以上的浏览器吗???如果只是机器或浏览器,那么您应该为这些设置创建一个替代解决方案。对于信息,您的代码笔会在osx 10上崩溃我的FF 45。9@Kaiido你是对的,这是Firefox而不是Safari,我想我已经找到了解决办法