[英]How to get the embedding element from inside an svg
使用mySVGNode.parentNode,對於嵌入式svg文件,我會得到null。 理想情況下,我想引用embed標簽及其id屬性。
我可以為它成功搜索DOM,但是我很驚訝parentNode返回null。 嵌入式對象不支持它嗎?
正如@Eric所說, window.frameElement
是要走的路,但是不幸的是,它在IE或Edge中不起作用。
但是,有一種解決方法,即獲取父文檔,在其中找到<object>
或<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
您可以使用window.parent.document訪問嵌入文檔,以便通過其id獲取embed標簽,您可以執行以下操作...
window.parent.document.getElementById("<whatever your embed Id attribute is>");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.