【发布时间】:2013-03-19 13:26:56
【问题描述】:
我有一些带有线标记的 SVG 线条,并且我有一个可以移动这些线条的脚本。这适用于所有浏览器,包括 IE9。
不过,我只是在 IE10 上尝试过,当线条移动时,线条标记会落在后面。
可以在这里看到一个例子:http://jsfiddle.net/swYRK/8/
我在 Windows 7 和 8 上都试过这个。
有人知道发生了什么吗?这是 IE10 的错误,还是有其他方法可以移动线条和标记?
(请注意,实际应用程序对性能非常敏感,所以我非常希望避免在移动它们时每帧重新创建线条之类的事情。)
-
编辑:这似乎是一个真正的 IE 10 错误。我找到了一个open issue in the IE bug tracker(它需要一个微软帐户才能看到,这使得它对谷歌不可见。你好?),我已经添加了信息。 IE 尚未接受该问题。
如果人们能想到任何其他变通方法,那将是很高兴听到的。完全删除结束标记,渲染它,然后重新添加它们正常工作(显示可见闪烁),但不幸的是,在my application 中是不可接受的。
【问题讨论】:
-
想法(未经测试;我没有 IE10):如果您通过 setAttribute 而不是 DOM 更改位置,它是否有效?你可以申请
transform="translate()"并修改它吗?您可以将每一行包装在您翻译的<g>中,这会导致它变脏吗?如果在更改值后在所有内容上方或后面放置一个大矩形(或与旧位置和新位置的边界框重叠)以强制重绘怎么办。 -
使用 setAttribute 得到完全相同的结果。使用翻译,无论是在线上还是线自己的
,似乎是一种非常复杂的方法来操纵将在任意点之间继续移动的线,因为我必须继续计算旋转、拉伸等。这里是实际用例:short.concord.org//1a。在 IE10 中,一旦箭头开始移动,所有箭头都会“落后” -
当然;我不认为您正在单独移动端点。
transform因此就出来了。更改后如何更改标记的属性,或换出线上的标记属性。 -
哇,这更奇怪了。如果我更改标记(例如交换它们),它们会随着线移动。如果我交换它们并再次将它们交换回来......它们就会被抛在后面。似乎如果 IE 在第一次交换时不强制重新渲染它们,那么当它们连续交换两次时它会完全忽略它们。因此,让它以一种不会导致标记明显闪烁或其他东西的方式工作可能会很棘手。小提琴示例:jsfiddle.net/swYRK/10
-
刚刚在 IE11 预览版上测试了这个,顺便说一下,还有这个错误。
标签: html svg internet-explorer-10