使用 mySVGNode.parentNode 我得到一个嵌入式 svg 文件的 null 。理想情况下,我想引用 embed 标记及其 id 属性。
我可以成功地在 DOM 中搜索它,但我很惊讶 parentNode 返回 null。嵌入式对象不支持吗?
使用 mySVGNode.parentNode 我得到一个嵌入式 svg 文件的 null 。理想情况下,我想引用 embed 标记及其 id 属性。
我可以成功地在 DOM 中搜索它,但我很惊讶 parentNode 返回 null。嵌入式对象不支持吗?
您正在寻找的是window.frameElement
. 请参阅html5 规范中的定义。
这是一个例子。
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