我有一个应用程序,我将不同的SVG文件加载到对象中,并使用JS对它们执行操作。代码是正确的,并且可以在所有最新的浏览器中运行,甚至IE11,只有Safari的一个例外(包括iOS上的Safari和wkhtmltopdf)。
当应用程序在Safari中运行时,SVG对象的性能非常糟糕。这包括初始页面加载和更改主机data
的{{1}}属性。循环使用SVG元素时使用<object>
等基本任务可能会使应用程序挂起几分钟。
该应用程序完全依赖于SVG交互性,因此这对我来说是一个主要问题。
我很确定这与SVG文件的内容有关。我一直在玩简化文件以查看特定类型的SVG功能是否应该受到指责(模式,样式,嵌入图像,setAttribute
元素等),而事情确实变得更快,因为像图像这样的东西掏空我还没有发现任何主要罪魁祸首而且我无法在不破坏应用程序的情况下删除功能。
我注意到的一件奇怪的事情是,从“简单”SVG变为复杂SVG比其他方式更快。似乎Safari在不需要时清理复杂对象时遇到了麻烦。
我在以下链接中设置了一个演示页:
http://www.flooradvisor.com.au/shapes/backend/tests/webkit-svg-change-src.html
如果有人能帮助我理解为什么Safari讨厌我的SVG文件以及我可以做些什么,那将非常感激。