我希望能够从一个或多个嵌套的iframe内部向上移动DOM,以获取并清空顶部iframe的父div。如果只有一个iframe,或者如果有两个iframe,我希望我的JS能够工作。
我有一个包含此iframe的主页:
ad.html
然后在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 = '';
,iframe中的页面,我有这个JavaScript:
ad-unit
这会占用包含页面的DOM,直到找到类ad.html
的div并将其清空。
这很好用。但遗憾的是,有时候<div class="ad-unit">
<div class="ad-unit-large">
<iframe width="970" height="250" src="frame.html"></iframe>
</div>
</div>
会在嵌套在第一个iframe中的第二个iframe内提供,所以:
frame.html
<iframe width="970" height="250" src="ad.html"></iframe>
将包含:
var el = document;
谁能告诉我如何处理这个案子?我尝试用
开始我的脚本GMSCameraPosition* cameraPosition = [GMSCameraPosition cameraWithLatitude:self.currentLocation.latitude
longitude:self.currentLocation.longitude
zoom:10];
self.myMapView = [GMSMapView mapWithFrame:CGRectZero camera:cameraPosition];
self.view = self.myMapView;
但是当DOM到达第一个iframe时,它就会停止。无论父节点是div还是iframe,我如何继续向上走?
答案 0 :(得分:1)
如果您找不到正确的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 = '';