2

使用 mySVGNode.parentNode 我得到一个嵌入式 svg 文件的 null 。理想情况下,我想引用 embed 标记及其 id 属性。

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

4

2 回答 2

3

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

这是一个例子

于 2012-12-10T12:29:28.953 回答
1

window.frameElement正如@Eric 所说,这是要走的路,但不幸的是,它在 IE 或 Edge 中不起作用。

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

与通过 ID 进行常规 DOM 搜索不同,这避免了为您的对象/嵌入标签分配唯一 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
于 2017-11-28T10:53:11.767 回答