Per*_*eck 2 javascript html5 svg
我需要获取一个<svg>元素的SVGPoint,但是由于某种原因,它在我的场景中不起作用。
考虑以下HTML
<body>
<svg id="inline">
</svg>
</body>
Run Code Online (Sandbox Code Playgroud)
和JavaScript
var s1 = document.getElementById('inline');
console.log('point', s1.createSVGPoint());
var s2 = document.createElement("svg");
s2.setAttribute("id", "inserted");
document.getElementsByTagName('body')[0].appendChild(s2);
console.log('point2', s2.createSVGPoint());
Run Code Online (Sandbox Code Playgroud)
第一个“ point”按预期方式输出,但是“ point2”输出在chrome中显示错误:
Uncaught TypeError: s2.createSVGPoint is not a function
Run Code Online (Sandbox Code Playgroud)
我创建了一个小矮人来演示:
好吧,我想出了什么问题。动态创建SVG元素时,您需要告诉浏览器它与“常规” html元素具有不同的名称空间。我需要创建这样的元素:
document.createElementNS('http://www.w3.org/2000/svg', 'svg');
Run Code Online (Sandbox Code Playgroud)
内联编写HTML时,浏览器会以某种方式理解并推断出正确的名称空间。
如果您喜欢我,遇到了与Angular2一起使用的问题,则当前存在一个(alpha 38-alpha44)错误,该错误阻止svg元素正确创建,这实际上是我问题的根源。如果您也因为该错误而在这里,请查看以下内容:https : //github.com/angular/angular/issues/4506
| 归档时间: |
|
| 查看次数: |
4564 次 |
| 最近记录: |