leaflet-dvf 标记不会在 IE11 中呈现

leaflet-dvf markers won't render in IE11

不幸的是,我需要一个使用图表标记的 leaflet-dvf 应用程序,它也需要在 IE 11 中工作。它在 Chrome 和 Firefox 中工作正常。此处的标记示例也不会在 IE 11 中呈现:

http://humangeo.github.io/leaflet-dvf/examples/html/markers.html

有解决办法吗?我尝试将元 X-UA-Compatible IE=edge 添加到我的应用程序,但这似乎没有帮助。

它在 IE 中不起作用的事实是因为自定义 SVG 标记是一项实验性功能(它是用源代码编写的),错误来自

var children = gradient.children;
var childLength = children.length; // Cannot read property length of undefined, line 2739 of the file

所以目前唯一的解决办法就是自己修改源代码。 渐变只是一个 gradient SVG 元素。

我想那是因为 IE 不支持 DOM 元素上的子节点 属性,但是您应该尝试使用子节点 属性.

var children = gradient.childNodes;
var childLength = children.length;

我现在无法对其进行测试,但它可能会起作用,或者您可能会绕过这些步骤并发现 IE 的其他问题。请注意 childNodeschildren 不同,因为它 returns 一个元素的所有节点,而不仅仅是它的元素,所以长度会有所不同。

参见 here

如果您不想通过逐步调试代码使其在 IE 上运行而弄脏自己的手(即使我认为这只是一点点努力),请使用 DOM像 this 这样的垫片,它会解决你面临的问题。

这里是项目作者之一。

这个问题应该在 1.0dev branch 中修复(与 Leaflet 1.0 兼容),但我会在 master 分支中进行相同的修复并将其上推。感谢您指出了这一点!