Newsgroup: it.comp.lang.javascript
Titolo: Script Immagine Full Screen - Non funziona in IE

Ciao a tutti,
    ho fatto, basandomi su documentazione on-line, uno script per
leggere le dimensioni dello schermo in cui sto aprendo la mia
immagine, per poi ridimensionare quest'ultima in modo che sia
visualizzabile all'interno della pagina, nonostante le dimensioni
della stessa saino maggiori della pagina.
</script>
<SCRIPT type="text/javascript">
    function findLivePageHeight() {
        if (window.innerHeight != null)
          return window.innerHeight;
        if (document.body.clientHeight != null)
          return document.body.clientHeight;
        return (0);
    }
    function findLivePageWidth() {
        if (window.innerWidth != null)
          return window.innerWidth;
        if (document.body.clientWidth != null)
          return document.body.clientWidth;
        return (0);
    }
</script>
<body onload="prova()">
    <form id="form1" runat="server" >
    <div>
        <asp:Image ID="imgProdotto" runat="server" />
    </div>
<SCRIPT type="text/javascript">
function prova(){
        var img = document.getElementById('<%= imgProdotto.clientid
%>');
        if (img != null) {
        //while (img.width < lw & img.height < lh){
            var lw = findLivePageWidth();
            if (img.width > lw) {
                img.height = img.height * lw / img.width;
                img.width = lw;
            }
            var lh = findLivePageHeight();
            if (img.height > lh) {
                img.width = img.width * lh / img.height;
                img.height = lh;
            }
        }
        else{
            //window.location.reload()
        }
        var img = null;
}
</script>
In FireFox funziona che è una meraviglia!!! In IE mi fa solo il primo
dei 2 ridimensionamenti: ovvero vede che l'immagine è più larga, e
quindi imposta la larghezza dell'immagine alla larghezza della pagina
e imposta l'altezza in proporzione. Però poi non riesce a fare lo
stesso con l'altezza (che resta cmq maggiore di quella della pagina).
Quello che proprio non capisco è come mai in FF funziona e in IE no.
Tra l'altro in FF ho gli strumenti per debuggare il JS,mentre in IE,
se esistono, non li conosco.
Potete aiutarmi? Ho cercato scripts che facessero lo stesso ma non ho
trovato nulla che differisse sostanzialmente da quanto ho già fatto.
Qualcuno usa screen.availWidth e screen.availHeight per reperire le
dimensioni della pagina ma, provando, non ho notato differenze.
Grazie Mille
Ellis

 dimensioni della pagina ma, provando, non ho notato differenze.
Non sono le dimensioni della pagina, quelle, bensì del desktop.
-- 
~ "L'arte non riproduce cio' che e' visibile,ma rende visibile cio'
che
non  sempre lo e'" (Paul Klee)

Anzitutto ti ringrazio per il tuo prezioso aiuto.
Questo è lo script funzionante (sicuramente non il più
ottimizzato ;D):
<script type="text/javascript">
    function myWidthSize() {
      var myWidth = 0;
      if( typeof( window.innerWidth ) == 'number' ) {
        //Non-IE
        myWidth = window.innerWidth;
      } else if( document.documentElement &&
( document.documentElement.clientWidth ||
document.documentElement.clientHeight ) ) {
        //IE 6+ in 'standards compliant mode'
        myWidth = document.documentElement.clientWidth;
      } else if( document.body && ( document.body.clientWidth ||
document.body.clientHeight ) ) {
        //IE 4 compatible
        myWidth = document.body.clientWidth;
      }
      //alert(myWidth);
      return myWidth;
    }
    function myHeightSize() {
      var  myHeight = 0;
      if( typeof( window.innerWidth ) == 'number' ) {
        //Non-IE
        myHeight = window.innerHeight;
      } else if( document.documentElement &&
( document.documentElement.clientWidth ||
document.documentElement.clientHeight ) ) {
        //IE 6+ in 'standards compliant mode'
        myHeight = document.documentElement.clientHeight;
      } else if( document.body && ( document.body.clientWidth ||
document.body.clientHeight ) ) {
        //IE 4 compatible
        myHeight = document.body.clientHeight;
      }
      //alert(myHeight);
      return myHeight;
    }
</script>
<body onload="Dimensioni()">
    <form id="form1" runat="server" >
    <div>
        <asp:Image ID="imgProdotto" runat="server" />
    </div>
<script type="text/javascript">
    function Dimensioni(){
        var lw = myWidthSize();
        var lh = myHeightSize();
        var img = document.getElementById('<%= imgProdotto.clientid
%>');
        if (img != "undefined") {
            if (img.width > lw) {
                img.height = img.height * lw / img.width;
                img.width = lw;
            }
            if (img.height > lh) {
                img.width = img.width * lh / img.height;
                img.height = lh;
            }
        }
    }
</script>
    </form>
</body>
</html>
Concettualemente utilizzo un sistema di controllo sulla versione del
browser un po' più evoluto e, in base ad esso, estraggo il dato
corretto sull'area utile del browser. L'ho testato e mi sembra
funzionare bene.
Per quanto riguarda il calcolo delle dimensioni dell'immagine in base
alla finestra, mi rendo conto che sarebbe meglio controllare il
rapporto tra le dimensioni dell'immagine e della finestra utile del
browser, esattamente come dici tu. Perdonate la pigrizia, ma così
com'è, logicamente parlando, sono sicuro che le dimensioni siano
sempre quelle giuste. Inoltre, essendo questa pagina piuttosto
"leggera", non penso sia necessaria una vera e propria operazione di
ottimizzazione....
Grazie ancora per l'aiuto
Ellis