Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    379

    ridimensionare un iframe in base al contenuto

    come dal titolo voglio chiedere se è possibile ridimensionare un iframe in base al suo contenuto, e fare in modo che se il suo contenuto cambia, le dimensioni del medesimo si adeguino.

    ho cercato un po nel web e ho trovato questo:

    http://support.microsoft.com/kb/278469/it

    HO avuto modo di provarlo e funziona male con ie e per nulla con firefox!

    qualcuno potrebbe cortesemente darmi una mano please

  2. #2
    Utente di HTML.it L'avatar di Igreo
    Registrato dal
    Jun 2004
    Messaggi
    1,114
    Teoricamente dovresti studiare questi passaggi:

    Inserire la tua pagina nell'iframe all'interno di un table (questo perchè non so se con il parametro body si riesca a fare qualcosa di crossbrowser).
    Quindi, leggi l'height e il width (cookie) e lo applichi all'iframe, sempre tramite javascript e con successiva reload della pagina.
    Infine fai al medesima cosa ogni qual volta l'height o il width del table, nella tua pagina contenuta nell'iframe, cambia!


    I passi da studiare e trovarti sono:
    come settare il cookie
    come trovarti la grandezza (settata al 100% sia in height che in width) della tabella (style.height, style.width) che poi registrerai nel cookie
    farti il javascript per ridimensionare l'iframe, settando nello script un setInterval che leggerà il cookie e se questo non è uguale alle dimensioni della tabella, ridimensioni l'iframe e riscrivi il cookie (ti informa che per scriverlo hai bisogno di una funzione setCookie e per leggerlo di un getCookie)!



    Ciao, spero di averti chiarito un pochino!


    PS: Per quanto riguardo il tuo script postato, credo che non sia valutata la variabile ifrm che dovrebbe essere document.iframe["nome_iframe"]; Mah!

  3. #3
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    Originariamente inviato da Igreo
    Ciao, spero di averti chiarito un pochino!

    io spero invece non segua i tuoi consigli, che complicano inutilmente la faccenda all' inverosimile

    parti dal link segnalato qui
    http://forum.html.it/forum/showthrea...98#post9820698

    ciao

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    379
    IO ho fatto cosi:

    Codice PHP:
    function calcHeight()
    {
      
    //trova l'altezza della pagina
      
    var content_heightdocument.getElementById('content').contentWindow.
      
    document.body.scrollHeight;

      
    //sostituisce i parametri
      
    document.getElementById('content').height content_height+50;

    e richiamo il tutto in questo modo

    Codice PHP:
    <td valign="middle" align="center"><iframe width="100%" id="content" name="iframe" onLoad="calcHeight();" src="forum.php" scrolling="no" 
                  
    frameborder="0" height="1">Il tuo Browser non supporta gli iframe.</iframe></td
    non so se è regolare al w3c o altro ma funziona xD

    se non è un implementazione troppo lunga, avrei pensato a fare un effetto che come dire apre la pagina dall'alto verso il basso, sempre utilizzando il parametro di altezza. Non so, magari salvare quello iniziale e passare all'altro allungando o accorciando il frame mano a mano!

    credo sia possibile ma sono abbastanza novello in ambito js ^^"

  5. #5
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    proprio al volo,
    ci sono 10000 modi di farlo meglio
    codice:
    var timer=false;
    
    function $(id){
    	return document.getElementById(id);
    }
    
    function setval(x,fx){
    	var m=(x<fx)?1:-1;
    	x=x+((2+(((fx-x)/4)*m))/(2*0.8))*m;
    	if((m>0 && x>fx)||(m<0 && x<fx)) x=fx;
    	return x;
    }
    
    function setH(fh){
    	el=$('contenitore');
    	var h=setval(parseInt(el.style.height),fh);
    	el.style.height=h+'px';
    	if(h!=fh){
    		timer=setTimeout("setH("+fh+")", 50);
    	}
    }
    
    function rSetH(fh){
    	if(timer) clearTimeout(timer);
    	setH(fh);
    }
    codice:
    rSetH: 200 | 20 | 100
    <div id="contenitore" style="height:120px;"></div>
    ciao

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    379
    sfrutto la tua presenza x domandarti una sola cosa, xke mi sono innamorato!

    esiste una guida per bytefx in italiano? io non capisco l'autore è italiano e deve scrivere tutto in inglese -.-''

    del resto grazie di tutto ora provo subito

  7. #7
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    bytefx e' una creazione di andr3a,
    che spesso passa da queste parti e potra' confermarti l' esistinza o meno di documentazione in italiano

    non credo esista e a mio parere, dovendo scegliere una sola lingua per tutta la documentazione dei suoi progetti, fa benissimo a preferire l' inglese

  8. #8
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    379
    se uno mi parla o x cose superficiali l'inglese lo capisco pure... ma se si tratta di cose specifiche mai viste prima faccio molta fatica dato che probabilmente stenterei a capire anche in italiano!

    Magari si potrebbe aprire un thread su come utilizzare questa [a mio parere ] ottima lib! facendo degli esempi molto molto facili xD

  9. #9
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    379
    scusate se domando ancora ma sarò scemo, ma non sono riuscito ad adeguare la tua funzione al codice che già avevo

    ho fatto cosi dove $ è la funzione getelementbyid:
    Codice PHP:
      var timer false;
      function 
    setval(x,fx){
            var 
    m=(x<fx)?1:-1;
            
    x=x+((2+(((fx-x)/4)*m))/(2*0.8))*m;
            if((
    m>&& x>fx)||(m<&& x<fx)) x=fx;
           return 
    x;
        }
          
      function 
    setH(arriva){
          
    //altezza del frame in questo momento
        
    var iframeH = $('content').style.height;
        
    setval(parseInt(iframeH),arriva);    
        var 
    fine iframeH h+'px';
            
        if(
    h!=arriva){
          
    timer setTimeout("setH("+arriva+")"50);
        }
      }
        
      function 
    iframescroll(){
        var 
    contentH 500;
        
    /*$('content').contentWindow.document.body.scrollHeight;*/
        
    if(timerclearTimeout(timer);
        
    setH(contentH);
      } 
    <iframe style="height:10px; width:100%;" id="content" name="iframe" onLoad="iframescroll();" src="forum.php"
    scrolling="no" frameborder="0" height="1" allowtransparency="true">Il tuo Browser non supporta gli iframe.</iframe>

    non so' come mai ma non riesco a farlo andare!!

  10. #10
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    379
    ora funziona grazie dell'aiuto!

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.