好像是微软 边缘 </跨度> 不能设置一个 数据 </跨度> 使用数据集在SVG元素上进行属性。我做了一个简化的测试用例:
https://codepen.io/freemagee/pen/YQRowd
Codepen上有一个SVG,然后我尝试添加一些 数据 </跨度> 使用数据集将属性赋予它。当我在Microsoft中查看该codepen时 边缘 </跨度> 我收到控制台错误。
Codepen代码段
HTML
&lt; svg version =“1.1”id =“svg”xmlns =“http://www.w3
它的状态存在问题 '固定,尚未动摇' 这里: https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/8489259/
在此期间,为了向后兼容,使用 getAttribute 和 setAttribute 代替 dataset 似乎是要走的路。
getAttribute
setAttribute
dataset
我已经为将来遇到这些问题的人进行了基本功能测试。
https://codepen.io/freemagee/pen/QgoNJz
基本上,动态创建SVG并在try / catch中操纵数据集。
var hasSvgDatasetSupport = supportSvgDataset(); function supportSvgDataset() { var doesSupport = true; var testSvg = document.createElementNS('http://www.w3.org/2000/svg', 'svg'); try { testSvg.dataset.shape = 'vector'; } catch (error) { doesSupport = false; } return doesSupport; } // Example usage var el = document.getElementById('shape'); if (hasSvgDatasetSupport) { el.dataset.mood = 'happy'; } else { el.setAttribute('data-mood', 'unhappy'); }
我不够聪明地做一个正确的polyfill,但这使得一个在Microsoft Edge失败的网站完全正常工作。