lo sniffing su proprieta' dell' oggetto navigator non e' cosa molto fine:
cambiano troppo tra browser simili (o troppo poco tra browser completamente dissimili)
senza considerare che potrei assegnare x es. useragent completamente inventato al mio browser
inizia col non mettere l' immagine in layer, ma togli margini, padding e overflow al body e all' html con i css
codice:
body, html {
padding:0;
margin:0;
overflow:hidden;
}
in document.images[0].width avrai sempre la larghezza dell' immagine, ovunque javascript sia supportato (a patto di richiedere il dato a caricamento avvenuto)
innerWidth e' supportato tanto da MOZ e affini quanto da NN4 (e anche da opera che pero' non ridimensiona le finestre), quando restituisce undefined passa a valutare IE che restituisce il valore atteso, a seconda che ci si trovi o meno in documento con doctype valido, in document.documentElement.clientWidth o in document.body.clientWidth
(puoi richiedere questo valore solo quando gia' esiste un tag body)
x tagliare corto, proverei qualcosa del genere
codice:
<script type="text/javascript">
<!--
function getBrWH(){
var dims={w:0,h:0};
dims.w=(window.innerWidth)?window.innerWidth:
(document.documentElement.clientWidth)?document.documentElement.clientWidth:
(document.body.clientWidth)?document.body.clientWidth:0;
dims.h=(window.innerHeight)?window.innerHeight:
(document.documentElement.clientHeight)?document.documentElement.clientHeight:
(document.body.clientHeight)?document.body.clientHeight:0;
return dims;
}
function resizeBr(){
var i={w:document.images[0].width,h:document.images[0].height};
var br0=getBrWH();
self.resizeTo(br0.w,br0.h);
var br1=getBrWH();
self.resizeTo(i.w+(br0.w-br1.w),i.h+(br0.h-br1.h));
}
window.onload=resizeBr;
//-->
</script>
ciao