Visualizzazione risultati 1 fino 13 di 13

Discussione: Altezza auto a iframe

  1. #1
    Guest

    Question Altezza auto a iframe

    Buongiorno a tutti, è da un po' che sto cercando in rete una soluzione al mio problema ma senza risultati.

    È possibile tramite js fare in modo che un iframe con designmode = on adatti la sua altezza in base al testo che gli viene inserito. Per dirla più semplice, che faccia crescere l'altezza ad ogni nuova riga di testo?

    Qui trovate il codice del mio iframe: http://jsfiddle.net/mark116/cXrEK/2/

  2. #2
    L'avatar di saitfainder
    saitfainder non è connesso Sëniör Stäff
    Data registrazione
    06-12-2002
    Residenza
    Torino
    Messaggi
    8,715

    Predefinito

    Un iframe contiene un'altra pagina web, ma la sua dimensione è determinata dalla pagina contenitore. L'unico modo di far funzionare le cose è l'utilizzo di Javascript da entrambe le parti.


    «È una mia peculiarità distorcere la verità e inventarne di nuove.»
    «I tuoi orientamenti hanno su di me un effetto prossimo allo zero.»


  3. #3
    Guest

    Predefinito

    Citazione Originalmente inviato da saitfainder Visualizza messaggio
    Un iframe contiene un'altra pagina web, ma la sua dimensione è determinata dalla pagina contenitore. L'unico modo di far funzionare le cose è l'utilizzo di Javascript da entrambe le parti.
    Ok, in questo caso l'altra pagine dov'è? Sapresti aiutarmi con il codice?

  4. #4
    karl94 non è connesso Staff AV
    Data registrazione
    03-10-2005
    Messaggi
    17,745

    Predefinito

    Ma sei sicuro che sia necessario l'iframe? A che ti serve?

  5. #5
    Guest

    Predefinito

    Citazione Originalmente inviato da karl94 Visualizza messaggio
    Ma sei sicuro che sia necessario l'iframe? A che ti serve?
    Si sono sicuro, ho realizzando un WYSWYG e l'alternativa, un div con contenteditable, non si prestava

  6. #6
    Guest

    Predefinito

    Citazione Originalmente inviato da saitfainder Visualizza messaggio
    Un iframe contiene un'altra pagina web, ma la sua dimensione è determinata dalla pagina contenitore. L'unico modo di far funzionare le cose è l'utilizzo di Javascript da entrambe le parti.
    Puoi darmi altre informazioni?

  7. #7
    karl94 non è connesso Staff AV
    Data registrazione
    03-10-2005
    Messaggi
    17,745

    Predefinito

    Beh, se i documenti caricati da ambedue le parti provengono dallo stesso dominio, possono comunicare direttamente accedendo l'uno agli oggetti dell'altro, principalmente mediante la proprietà contentWindow dell'oggetto DOM rappresentante l'iframe o la proprietà top. Se i domini non corrispondono, ti devi affidare ad API più moderne. Dai un'occhiata a questo articolo, è abbastanza completo: http://softwareas.com/cross-domain-c...n-with-iframes.

  8. #8
    Guest

    Predefinito

    Ok, grazie alle vostre dritte sono riuscito a scrivere del codice più o meno funzionante:

    Codice:
    function iframeAutoHeight()
     {
      /*Attivo l'iframe*/
      var ifrm = document.getElementById('editArea');
      ifrm = ifrm.contentWindow ? ifrm.contentWindow.document : ifrm.contentDocument ? ifrm.contentDocument : ifrm.document;
    
      /*Leggo l'altezza*/
      height = ifrm.body.offsetHeight;
      alert(height);
      if(height<=600)
       {document.getElementById('editArea').style.height = "600px";}
      else
       {document.getElementById('editArea').style.height = height+"px";}
     }
    Adesso ad ogni tasto premuto l'altezza del mio iframe si espande per adattarsi al testo che deve contenere.

    Il problema è che se l'utente toglie delle righe di testo l'altezza non viene cambiata perché la "pagina di destinazione" non si ritira automaticamente. È una cosa risolvibile?

  9. #9
    karl94 non è connesso Staff AV
    Data registrazione
    03-10-2005
    Messaggi
    17,745

    Predefinito

    In base a cosa viene richiamata la funzione iframeAutoHeight? Comunque io sposterei le prime due istruzioni di assegnazione fuori dalla funzione, in quanto si suppone che l'elemento sta sempre lo stesso tra le varie chiamate alla funzione. Al più puoi anche passarlo come parametro.
    Ultima modifica di karl94 : 18-12-2013 alle ore 22.56.36

  10. #10
    Guest

    Predefinito

    Ad ogni pressione di un tasto, evento onkeypress. Cmq viene richiamata, e legge correttamente l'altezza. Il problema è che una volta impostato il valore 650, non c'è verso di tornare a 600. lo script legge sempre 650, anche se ho cancellato delle righe :(

  11. #11
    karl94 non è connesso Staff AV
    Data registrazione
    03-10-2005
    Messaggi
    17,745

    Predefinito

    Puoi indicare l'indirizzo della pagina in questione?

  12. #12
    Guest

    Predefinito

    Citazione Originalmente inviato da karl94 Visualizza messaggio
    Puoi indicare l'indirizzo della pagina in questione?
    Il della pagina purtroppo no, ma ho scritto il codice qui: http://jsfiddle.net/mark116/cXrEK/3/

    Nell'esempio puoi vedere il codice e il problema

  13. #13
    karl94 non è connesso Staff AV
    Data registrazione
    03-10-2005
    Messaggi
    17,745

    Predefinito

    Non riesco a riprodurre il problema né con Firefox né con Chromium, cancellando il contenuto inserito riesco sempre a ritornare all'altezza di 600px. Puoi indicare il browser problematico e la relativa versione?

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •