[英]Walk up DOM through multiple iframes in vanilla JS
我希望能够从一个或多个嵌套iframe的内部向上移动DOM,以抓取并清空顶部iframe的父div。 如果只有一个iframe,或者有两个iframe,我希望我的JS可以工作。
我有这个iframe的主页:
<div class="ad-unit">
<div class="ad-unit-large">
<iframe width="970" height="250" src="ad.html"></iframe>
</div>
</div>
然后在iframe中的页面ad.html
,我有以下JavaScript:
function getAdSlot() {
var el = window.frameElement.parentNode;
for (; el; el = el.parentNode) {
if (el.classList && el.classList.contains('ad-unit')) return el;
}
return false;
}
var el = getAdSlot();
console.log(el);
el.innerHTML = '';
这将遍历包含页面的DOM,直到找到具有ad-unit
类的div并将其清空。
这很好。 但是很遗憾,有时ad.html
会在第二个iframe中嵌套在第二个iframe中,因此:
<div class="ad-unit">
<div class="ad-unit-large">
<iframe width="970" height="250" src="frame.html"></iframe>
</div>
</div>
并且frame.html
将包含:
<iframe width="970" height="250" src="ad.html"></iframe>
谁能告诉我该如何处理? 我尝试用以下命令启动脚本
var el = document;
但是,DOM走到第一个iframe时就停止了。 无论父节点是div还是iframe,我如何继续上DOM?
如果找不到正确的div,则必须使用parent
级转到下一个iframe
(或顶级window
)
function getAdSlot(win) {
var el = win.frameElement.parentNode;
for (; el; el = el.parentNode) {
if (el.classList && el.classList.contains('ad-unit')) return el;
}
// Reached the top, didn't find it
if (parent === top) {
return false;
}
// Try again with the parent window
return getAdSlot(parent);
}
var el = getAdSlot();
console.log(el);
el.innerHTML = '';
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.