广告提供商希望我们向我们的网站添加一些 Javascript,以便他们调整投放广告的 iframe 的大小。我一直在浏览代码,其中一部分是这个循环:
var topIframes = top.document.getElementsByTagName('IFRAME');
for (var i = 0; i < topIframes.length; i++) {
if (topIframes[i].contentWindow === self) {
// found iframe that served the ad
topIframes[i].style.height = sz + 'px';
}
}
我可以看到它正在抓取文档中的所有 iframe 并调整其中一个或多个 iframe 的高度。但我无法弄清楚条件在做什么。
我知道 contentWindow 是 iframe 内的窗口,并查看self 和 window 之间的区别是什么?我看到“self”是对窗口对象的引用。但是哪个窗口对象?父窗口还是 iframe 内的窗口?iframe里面甚至有一个窗口吗?为什么要检查 iframe 内的窗口是否是 iframe 内的窗口?
////////////////////////////////////
编辑
应 Snuffleapagus 的要求,这是长版本:
<script type="text/javascript">
// iframe shrink function that needs to be on the hosting page
rp_resize = function (sz) {
try {
var topIframes = top.document.getElementsByTagName('IFRAME');
for (var i = 0; i < topIframes.length; i++) {
if (topIframes[i].contentWindow === self) {
// found iframe that served the ad
topIframes[i].style.height = sz + 'px';
}
}
} catch (e) {
}
}
</script>
<script>
// this is the code that goes in the passback to initiate the function
try {
if (typeof(rp_mpu) === 'function') {
rp_resize(250);
}
} catch (e) {
}
</script>
<script language="JavaScript" type="text/javascript">
rp_account = '<account-id>';
rp_site = '<site-id>';
rp_zonesize = '<zone-id>-<size-id>';
rp_adtype = 'js';
rp_smartfile = 'http://<url>/..../revv_smart_file.html'; // this should be the URL path to the friendly iframe that needs resizing
</script>
<script type="text/javascript" src="http://ads.<url>.com/ad/<account-id>.js"></script>
////////////////////////////////////
编辑
这是广告提供商在回答我关于这种情况的问题时可能提供的线索。不知道它有多少用处,因为他不是开发人员。
“您正在查看的代码行试图确定它是否是启动函数的 iFrame,以便可以相应地调整它的大小。”