Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 18
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2014
    Messaggi
    9

    Firefox javascript iframe con designMode on

    ciao a tutti ho riscontrato un problema mentre stavo progettando la mia web application che mi ha lasciato un attimo sconcertato e non so più dove andare a sbattere la testa.

    Quello che voglio fare è crearmi un area editabile che contenga gia una frase tramite javascript.

    Il problema l'ho risolto usando un iframe impostandolo con designMode = 'on' ecc...su chrome funziona tutto alla perfezione, il problema è quando provo ad interpretare il codice con Firefox il quale mi crea l'iframe vuoto, è come se non eseguisse la riga designMode.

    La cosa strana che se aggiungo un alert(). il tutto funziona

    Qualcuno sa spiegarmi come sia possibile? e dove sbaglio?

    grz

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Ciao e benvenuto, senza codice è impossibile rispondere, inoltre se metti anche un link alla pagina pubblica (tuosito.xxxx/paginademo.xxxx) ci agevolerebbe molto
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2014
    Messaggi
    9
    <head>
    <script type="text/javascript">
    var n_sessioni = 0;
    function AttivaFrame(iFrameID)
    {
    if (document.getElementById(iFrameID).contentDocument ){ alert(); //aggiunto per funzionare su firefox
    //Mozilla
    return document.getElementById(iFrameID).contentDocument; }
    else
    //Internet Explorer
    return document.frames[iFrameID].document;
    }
    </script>
    </head>

    <div id="testo"> "Contiene il testo da cui prendo le frasi che mi servono"</div>
    <script>
    ...
    function modifica(id,frase)
    {
    document.getElementById("testo").className = 'size-testo';
    $('#'+id).addClass('frase-sessione');
    var node = document.createElement('iframe');
    var id = document.createAttribute('id');
    id.value = "modifica"+n_sessioni;
    var clas = document.createAttribute('class');
    clas.value = "size-iframe";
    node.setAttributeNode(id);
    node.setAttributeNode(clas);
    document.getElementById('iframe').appendChild(node );

    AttivaFrame("modifica"+n_sessioni).designMode = "On";
    AttivaFrame("modifica"+n_sessioni).body.innerHTML = '<span id="'+id+'">'+frase+'</span>';
    n_sessioni++;
    };
    </script>

    <div id="mod"> </div>
    Ultima modifica di _mauri_; 08-06-2014 a 07:57

  4. #4
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Premessa quando si chiede aiuto bisogna agevolare il più possibile altrimenti chi ti vuole aiutare si scoraggia (si scoccia) e ti molla al tuo problema pertanto quando ti si chiedere un link pubblico (visto che ci sono hosting free tipo altervista.org) è sempre meglio farlo, e/o quanto meno motivare perché non si può fare quanto richiesto.
    Postare il codice tra i tag [c o d e] [/c o d e] ( vedi modalità avanzata) così da rendere il codice più leggibile.
    Analizzando il codice
    codice:
    <head><script type="text/javascript">
    var n_sessioni = 0;
    function AttivaFrame(iFrameID)
    {
    if (document.getElementById(iFrameID).contentDocument ){ alert(); //questo alert va tolto 
    return document.getElementById(iFrameID).contentDocument; }
    else {// qui manca una parentesi apertura
    //Internet Explorer
    return document.frames[iFrameID].document;
    }// qui manca la parentesi chiusura
    } 
    </script>
    </head>
    
    
    <div id="testo"> "Contiene il testo da cui prendo le frasi che mi servono"</div>
    <script>
    ...
    function modifica(id,frase)
    {
    document.getElementById("testo").className = 'size-testo';
    $('#'+id).addClass('frase-sessione')//questo a cosa serve? Usi anche jquery?
    var node = document.createElement('iframe');
    var id = document.createAttribute('id');
    id.value = "modifica"+n_sessioni;
    var clas = document.createAttribute('class');
    clas.value = "size-iframe";
    node.setAttributeNode(id);
    node.setAttributeNode(clas); 
    document.getElementById('iframe').appendChild(node);//oggetto con id iframe  (che sarebbe meglio cambiare perché potrebbe essere una parola riservata js) dove è?
    
    
    AttivaFrame("modifica"+n_sessioni).designMode = "On";
    AttivaFrame("modifica"+n_sessioni).body.innerHTML = '<span id="'+id+'">'+frase+'</span>';
    n_sessioni++;
    };
    </script>
    
    
    <div id="mod"> </div>
    la funzione modifica dove è quando viene richiamata?
    Ricordati che se tutto questo processo deve avvenire al caricamento della pagina dovrai racchiudere il tutto nell'evento onload.



    P.S. Un minimo di conoscenza di javascript l'hai o non sai nulla?
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  5. #5
    In ogni caso, al di là del codice, non capisco proprio perchè scomodare un iframe: metti un tag textarea con display:none nel tuo codice html, quando ti servirà ne cambierai tramite js l'innerhtml e poi gli darai display:block... Senza nessun bisogno di contentEditable o di un iframe!
    "Le uniche cose che sbagli sono quelle che non provi a fare."
    Atipica

  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2014
    Messaggi
    9
    non posso usare un textarea perchè supporta solo testo e non permette di arrichirlo con tag html

  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2014
    Messaggi
    9
    come ho cercato di speiegare (male) all'inizio il codice funziona viene eseguito correttamente su chrome e anke sullo stesso firefox se metto quell alert nella funzione attiva frame.
    La funzione modifica viene richiamata da un click del mouse sulla frase interessata.

    P.S. non sarò ferratissimo su js ma un minimo di conoscenza ce l'ho.

  8. #8
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Dire che funziona mettendo un alert, significa che di js se sai veramente poco (o nulla), ok come non detto auguri
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  9. #9
    Utente di HTML.it
    Registrato dal
    Jun 2014
    Messaggi
    9
    x questo ho chiesto ovvio che non va bene cosi...mi sembra strano il fatto che su chrome funziona e su firefox no ed eseguono entrambi lo stesso codice.

    Non so per cosa tu te la sia presa non penso di essere stato sgarbato..cmq per precisare se pensassi che la soluzione giusta sia quella con l alert non avrei aperto questa discussione.

    grz comunque per le dritte che mi hai dato

    ciao
    Ultima modifica di _mauri_; 08-06-2014 a 20:06

  10. #10
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Non mi sono risentito, ma non mi piace perdere tempo, è visto che non ho capito cosa hai fatto e cosa no e sopratutto non hai messo un link alla pagina ritengo che se non t'interessa a te figurati a me.

    Saluti
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

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.