如何判断DOM元素是HTML还是SVG?

时间:2013-12-23 18:04:28

标签: html dom svg

我正在编写一个基础架构,需要对HTML元素与SVG元素进行不同的应用。给定DOM节点,如何判断它是SVG还是HTML元素?

2 个答案:

答案 0 :(得分:32)

您可以尝试以下内容:

if(document.getElementById("el") instanceof SVGElement) {
    console.log("It's an SVG element");
}
<svg xmlns="http://www.w3.org/2000/svg"
  xmlns:xlink="http://www.w3.org/1999/xlink" 
  width="300" height="300">
  <g id="firstGroup">
    <rect id="el" width="100" height="50" x="40" y="20" fill="blue" />
    <text x="40" y="100">This is a basic SVG document!</text>
  </g>
</svg>

请注意,<svg>元素本身实际上是一个包含 SVG元素的HTML元素 - 这意味着,或许令人惊讶的是,<svg> HTML元素是< em> not SVG元素,因此:

console.log(document.createElement("svg") instanceof SVGElement)) // => false

答案 1 :(得分:1)

我不确定它是如何与浏览器兼容的,但是我在浏览DOM属性并看到ownerSVGElement看起来很有希望?

这就是我正在玩弄的东西:http://jsbin.com/uMIronal/4/edit?html,js,output