使用mySVGNode.parentNode我为嵌入式svg文件获取null。理想情况下,我想引用embed标记及其id属性。
我可以成功搜索DOM,但我很惊讶parentNode返回null。嵌入式对象不支持吗?
答案 0 :(得分:3)
您正在寻找的是window.frameElement
。请参阅html5 spec中的定义。
这里是example。
答案 1 :(得分:1)
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>");