Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116

    altezza popup secondo righe contenuto

    Ho un popup con due tabelle una sotto l'altra.

    Le tabella sono generate nel server e possono avere diverse righe

    E' possibile aumentare l'altezza del popup adattandola al contenuto?

    Pietro

  2. #2
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    ciao Pietro,
    se non ti va di sommare l offsetHeight delle tabelle
    puoi tenere un elemento qualsiasi che segua le tabelle e ricavarne, dopo che il documento e stato caricato, la posizione nella pagina (link in script\discussioni utili)

  3. #3
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    ti ringrazio. La posizione di un elemento y della pagina ok, ma come dico alla pagina:
    la tua altezza è y + ???
    Pietro

  4. #4
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    pagina? finestra intendi
    self.resizeTo(x,y)

  5. #5
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Originariamente inviato da Xinod
    pagina? finestra intendi
    self.resizeTo(x,y)
    la posizione y la trovo con la funzione:
    //-----------------------------------------------------------------------
    //restituisce la coordinata y di un elemento rispetto alla pagina
    //-----------------------------------------------------------------------
    function getRealTop(el) {
    if (arguments.length==0) el = this;
    if(el == undefined) return 0;
    yPos = el.offsetTop;
    tempEl = el.offsetParent;
    while (tempEl != null) {
    yPos += tempEl.offsetTop;
    tempEl = tempEl.offsetParent;
    }
    return yPos;
    }
    ma a questo y non dovrei sommare la testa ed il piede del browser? :master:
    Pietro

  6. #6
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    si', se intendi le varie barre (menu', status, location) e vuoi ridimensionare la finestra si'

  7. #7
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Originariamente inviato da Xinod
    si', se intendi le varie barre (menu', status, location) e vuoi ridimensionare la finestra si'
    :master: bene, ma non conosco queste variabili
    Pietro

  8. #8
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    se non ti disturba troppo uno sfarfallio te le puoi ricavare con un doppio resize

    codice:
    b_w=function() {return ((window.innerWidth)?window.innerWidth:(document.documentElement.clientWidth)?document.documentElement.clientWidth:document.body.clientWidth)}
    b_h=function() {return ((window.innerHeight)?window.innerHeight:(document.documentElement.clientHeight)?document.documentElement.clientHeight:document.body.clientHeight)}
    rsz=function() {self.resizeTo(ww,hh)}
    
    function init() {
    // ricava posizione dell' elemento, dopodiche'...
    ww=b_w()
    hh=b_h()
    rsz()
    ww2=b_w()
    hh2=b_h()
    w_add=(ww-ww2)
    h_add=(hh-hh2)
    // negli add dovresti avere lo spazio occupato da barre e telaio
    ww+=w_add
    hh=y+h_add
    rsz()
    }
    prova...

  9. #9
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    non ho ancora provato il tuo codice perchè ero alle prese con autoesperimenti

    Un modo che ho provato è questo.
    Metto un segnaposto alla fine della pagina e ne ricavo la posizione y. L'aumento di 18 px per tenere conto del salto riga e ridimensiono la finestra.

    Allora, con IE6 e Firefox ottengo buoni risultati, sia con poche righe di tabella, sia con molte righe, perchè i browser si dimensionano alla max altezza visibile.

    CON OPERA 9 NON FUNZIONA

    il popup è aperto con la solita:
    window.open("a.asp", "popup","top=0px,left=0px,width=500px,height=500px ,resizable=yes,scrollbars=yes");

    la pagina asp (se non si usa asp, basta mettere una tabella con x righe) è:
    codice:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head>
        <title>Pagina senza titolo</title>
        <script type="text/javascript" src="../js/libreria.js"></script>
    <script language="javascript" type="text/javascript">
    // <!CDATA[
    
    function window_onload() 
    {
        var y = getRealTop($("br1"));
        ridimensiona(y);
    }
    
    function ridimensiona(y)
    {
    	window.setTimeout(function() {onsetTimeoutRidimensiona(y);}, 300);};
    	function onsetTimeoutRidimensiona(y)
    	{
    		var wh = ClientSize();
    		var w = wh.width;
            var h = wh.height;
            
    		window.resizeBy(0, y - h + 18); 
    	} 
    
    // ]]>
    </script>
    </head>
    <body onload="return window_onload()">
    
    <table border="1">
    <%for i=1 to 15 %>
    <tr><td><%=i %></td></tr>
    <%next %>
    </table>
    <br id="br1" style="font-size:0pt;" />
    
    </body>
    </html>
    le altre funzioni di libreria sono
    codice:
    /*----------------------------------------------------------------------------------------
    //restituisce in un oggetto {width:myWidth, height:myHeight }
    //lo spazio utile interno del browser
    //esempio:
    function window_onresize() 
    {
        var wh = ClientSize();
        var w = wh.width;
        var h = wh.height;
    }
    -----------------------------------------------------------------------------------------*/
    function ClientSize() 
    {
        var myWidth = 0, myHeight = 0;
        if( typeof( window.innerWidth ) == 'number' ) 
        {
            //Non-IE
            myWidth = window.innerWidth;
            myHeight = window.innerHeight;
        } 
        else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) 
        {
            //IE 6+ in 'standards compliant mode'
            myWidth = document.documentElement.clientWidth;
            myHeight = document.documentElement.clientHeight;
        } 
        else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) 
        {
            //IE 4 compatible
            myWidth = document.body.clientWidth;
            myHeight = document.body.clientHeight;
        }
        return {width:myWidth, height:myHeight };
    }
    
    
    
    
    //al posto di mettere document.getElementById("div1"), mettere $("div1")
    //da prototype.js
    function $() 
    {
        var elements = new Array();
    
        for (var i = 0; i < arguments.length; i++) 
        {
            var element = arguments[i];
            if (typeof element == 'string')
                element = document.getElementById(element);
    
            if (arguments.length == 1)
                return element;
    
            elements.push(element);
        }
    
        return elements;
    }
    
    //-----------------------------------------------------------------------
    //restituisce la coordinata y di un elemento rispetto alla pagina
    //-----------------------------------------------------------------------
    function getRealTop(el) {
        if (arguments.length==0) el = this;
        if(el == undefined) return 0;
        yPos = el.offsetTop;
        tempEl = el.offsetParent;
        while (tempEl != null) {
            yPos += tempEl.offsetTop;
            tempEl = tempEl.offsetParent;
        }
        return yPos;
    }
    Pietro

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.