広告プロバイダーは、広告が配信される iframe のサイズを変更できる Javascript をサイトに追加するよう求めています。私はコードを調べてきましたが、その一部は次のループです:
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 を取得し、そのうちの 1 つまたは複数の高さを調整していることがわかります。しかし、私は条件が何をしているのか理解できません。
私は contentWindow が iframe 内のウィンドウであることを知っており、自己とウィンドウの違いは何ですか? 「self」は window オブジェクトへの参照であることがわかります。しかし、どのウィンドウ オブジェクトでしょうか。親ウィンドウまたは 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 であるかどうかを判断しようとしているので、それに応じてサイズを変更できます。」