如何从svg内部获取嵌入元素

时间:2012-12-08 08:27:03

标签: javascript html5 dom svg

使用mySVGNode.parentNode我为嵌入式svg文件获取null。理想情况下,我想引用embed标记及其id属性。

我可以成功搜索DOM,但我很惊讶parentNode返回null。嵌入式对象不支持吗?

3 个答案:

答案 0 :(得分:3)

您正在寻找的是window.frameElement。请参阅html5 spec中的定义。

这里是example

答案 1 :(得分:1)

正如@Eric所说,

window.frameElement是要走的路,但遗憾的是它在IE或Edge中不起作用。

然而,有一种解决方法,即获取父文档,在其中找到<object><embed>标记(可能引用您的SVG),并为每个标记检查contentDocument是否是我们的SVG文档。

与通过ID搜索常规DOM不同,这样就无需为object / embed标记分配唯一ID。

示例:

var objectElt = window.frameElement;
if (!objectElt) { // IE/Edge case
    var objectElts = window.parent.document.getElementsByTagName("object");
    for (var i = 0; i < objectElts.length; i++) {
        if (objectElts[i].contentDocument == document) {
            objectElt = objectElts[i];
            break;
        }
    }
}
// objectElt now references the appropriate <object> tag

答案 2 :(得分:0)

您可以使用window.parent.document访问嵌入文档,以便通过其ID获取嵌入标记,您可以执行以下操作...

window.parent.document.getElementById("<whatever your embed Id attribute is>");