面白い問題に遭遇しました。何が原因かもわかりません。インターネットで検索しようとしましたが、解決策はありませんでした。問題は、offsetWidth が Chrome で完全に機能していることですが、offsetHeight が正しく機能していないことです。値を返すこともありますが、返さないこともあります。この問題を解決する解決策があることを知っているかもしれません。
注: id.height、id.clientHeight を使用しようとしました。しかし、すべてが私に同じ問題を与えています。私のプロジェクトでは、Prototype と JQuery も使用しています。
プロトタイプ getHeight() も使用しましたが、Chrome では動作しません。getWidth() は完璧に機能しています。しかし、これらはすべてFirefoxでうまく機能しています... :(
これがコードブロックです
$('leftImage_<?php echo $iExtLoop; ?>').style.position="relative";
$('leftImage_<?php echo $iExtLoop; ?>').style.left= ($('leftImageDiv').offsetWidth - $('leftImage_<?php echo $iExtLoop; ?>').offsetWidth)/2 + "px";
$('leftImage_<?php echo $iExtLoop; ?>').style.top= ($('leftImageDiv').offsetHeight - $('leftImage_<?php echo $iExtLoop; ?>').offsetHeight)/2 + "px";
if($('stripLeft_<?php echo $iExtLoop; ?>')){
$('stripLeft_<?php echo $iExtLoop; ?>').style.position="relative";
$('stripLeft_<?php echo $iExtLoop; ?>').style.left= ($('leftImageDiv').offsetWidth - $('stripLeft_<?php echo $iExtLoop; ?>').offsetWidth) + "px";
$('stripLeft_<?php echo $iExtLoop; ?>').style.top= ($('leftImageDiv').offsetHeight - $('stripLeft_<?php echo $iExtLoop; ?>').offsetHeight) + "px";
}
Šime Vidas によって追加されたリファクタリングされたコード:
var img = $( 'leftImage_<?php echo $iExtLoop; ?>' );
var div = $( 'leftImageDiv' );
var strip = $( 'stripLeft_<?php echo $iExtLoop; ?>' );
img.style.position = "relative";
img.style.left = ( div.offsetWidth - img.offsetWidth ) / 2 + "px";
img.style.top = ( div.offsetHeight - img.offsetHeight ) / 2 + "px";
if ( strip ) {
strip.style.position = "relative";
strip.style.left = ( div.offsetWidth - strip.offsetWidth ) + "px";
strip.style.top= ( div.offsetHeight - strip.offsetHeight ) + "px";
}