Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    254

    document.getElementById problema con FireFox

    Buongiorno,
    qualcuno sa dirmi qual'è il problema di questa funzione elementare? Proprio non capisco.
    codice:
    <html>
    <head>
    <title>editor</title>
    <script>
    function f(){
    	
    	var a = document.getElementById('nome').value;
    	
    	alert(a);
    }
    </script>
    </head>
    <body>
    <?php
    
    
    echo "<form method=\"post\" name=\"form_link\" onSubmit=\"f()\">";
    
    echo "<input type=\"text\" name=\"nome\">";
    echo "<input type=\"text\" name=\"link\">";
    echo "<input type=\"submit\" name=\"il_link\" value=\"INVIA\">";
    echo "</form>";
    ?>
    </body>
    </html>
    Grazie, Angelo

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    quando usi questa funzione: document.getElementById('nome').value; significa che vuoi recuperare il valore di un campo html che ha id = nome

    Nella parte html non esiste questo campo e quindi ti da errore.

    <input type="text" name="nome" id="nome">

  3. #3
    Ciao,
    non l'ho provato ma a occhio mi sembra che nessun tag abbia id=nome

    EDIT: battuto per un soffio da vindav!
    La democrazia rappresentativa ha fatto il suo tempo, è ora di passare alla democrazia diretta.
    www.beppegrillo.it

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    254
    Lo sapevo che era un errore banalissimo.
    Visto che ho la vostra attenzione posso farvi un'altra domanda anche se l'argomento è diverso?

    Io compongo una variabile in Js in questo modo:

    codice:
    link = "<a href=\"http://"+link+"\" target=\"_blank\">"+nome+"</a>";
    ora con FF utilizzo:

    codice:
    execCommand("insertHtml",link);
    che mi scrive in un frame soltanto il nome con link vivo ma senza tag.
    Dato che questa cosa non funziona con IE e dovrei usare:

    codice:
    execCommand("paste",link);
    che però mi mette anche i tag HTML, esiste un metodo che lavora come insertHtml cioè mi scrive nell'editor il link vivo ma senza html? Una cosa come link.innerText che chiaramente non è completa.

    Grazie

  5. #5
    ciao,
    ho ripescato lo script di cui parlavamo nei giorni scorsi e, senza neanche provare a modificarlo, ho semplicemente inserito questa stringa

    codice:
    pippo
    nell'iFrame dopo essere passato in modalità html.

    Tornando alla modalità testo il link mi si attiva segno che il giochino di passare da innerHTML a innerText

    codice:
    testo = riquadro.innerHTML;
    riquadro.innerText = testo;
    e viceversa funziona (sto provando con IE7).

    Devi solo adattarlo un po'
    La democrazia rappresentativa ha fatto il suo tempo, è ora di passare alla democrazia diretta.
    www.beppegrillo.it

  6. #6
    mmmmm,

    no, in realtà non è attivo, è blu, è sottolineato ma non è un link!

    Non so che dirti...
    La democrazia rappresentativa ha fatto il suo tempo, è ora di passare alla democrazia diretta.
    www.beppegrillo.it

  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    254
    Funziona, funziona...
    Nell'editor (iframe) non è vivo il link ma poi, dopo averlo acquisito e ristampato nella pagina diventa cliccabile. Questo editor sta diventando veramente una bomba. Ora vado con l'inserimento di immagini...grazie ancora.

    Per la cronaca il finale è:

    codice:
    if(document.all){
    		nome=document.getElementById("nome").value;
    		link=document.getElementById("link").value;
    		var linko = "<A href=\"http://"+link+"\" target=\"_blank\">"+nome+"</A>";
    		self.close();
    		setMode(true);
    		formatC("paste",linko);
    		setMode(false);
    	 }
    	 else{
    		 nome=document.getElementById("nome").value;
    		 link=document.getElementById("link").value;
    		 linko = "<a href=\"http://"+link+"\" target=\"_blank\">"+nome+"</a>";
    		 self.close();
    		 formatC("insertHtml",linko);

  8. #8
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    254
    ...che chiaramente non va bene se voglio linkare il testo selezionato.
    Ricapitolando:
    il mio problema era aggiungere il target="_blank" al comando execCommand("createLink");
    Per cui ho creato tutto quel macello ma adesso mi serve ottenere il testo selezionato e mettegli l'href.
    Partendo da:

    codice:
    iFrameDoc = eval(str_iFrameDoc);
    come faccio a farmi restituire il testo selezionato?

    C'è ancora: iFrameDoc.execCommand("copy") ma:
    a) con FF non funziona,
    b) come faccio ad avere il testo in una variabile in js?

    Sono nel pallone più totale!!!

  9. #9
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    254
    Ma perchè tanti browser???
    Ajax anche ha questi problemi di incompatibilità tra i browser?
    In ogni modo ho risolto. Lo metto qui, ho fatto un po di confusione su questo forum nel senso che ho creato 2 discussioni per cui metto il link dell'altra qui poi decidete voi che fare.

    per IE:

    codice:
    iFrameDoc = eval(str_iFrameDoc);
    var str=prompt("Enter url:", "http:\/\/");
    if ((str!=null) && (str!="http://")) {
     if (iFrameDoc.selection.type=="None") {  //se non c'è testo selezionato
      setFocus();
      var sel=iFrameDoc.selection.createRange();
      sel.pasteHTML("<A target=\"_blank\" HREF=\""+str+"\">"+str+"</A> ");
      sel.select();
     }
     else{  //se c'è testo selezionato
      setFocus();
      var sel=iFrameDoc.selection.createRange();
      sel.pasteHTML("<A target=\"_blank\" HREF=\""+str+"\">"+sel.text+"</A> ");
      sel.select();
     }
    }
    else { //se non è stato acquisito il link o il link è diverso da http
     setFocus();
    }
    Per FF:

    codice:
     
    
    var str=prompt("Enter url:", "http:\/\/");
    iFrameDoc = eval(str_iFrameDoc);
    var obj = iFrameDoc.body; 
    var range = document.getElementById('Composition').contentWindow.getSelection().getRangeAt(0);
    from = range.startOffset;
    to = range.endOffset; 
    if(from!=to){
     a=obj.innerHTML.substring(from,to);
    }
    else{
     a=str; //se non ho selezionato nulla allora il nome è uguale al link
    }
    linko= "<A target=\"_blank\" HREF=\""+str+"\">"+a+"</A>";
    formatC('insertHtml', linko);
    Per capire se usare IE o FF:

    codice:
     
    if(document.all) //è vera per IE ed è falsa per FF
    Infine il post in cui abbiamo cominciato le discussioni.
    Maiuscolo/minuscolo


    NonCeLaFaccio+ io ti/vi ringrazio infinitamente.
    Vindav grazie anche a te per il contributo.
    Ciao alla prossima.
    Angelo

  10. #10
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    254
    Scusate, quel metodo per FF fa confusione con i tag html ecco il nuovo ancora più semplice e, dai pochi test che ho fatto, funzionante:

    codice:
    var str=prompt("Enter url:", "http:\/\/");
    	iFrameDoc = eval(str_iFrameDoc); 
    	var a = document.getElementById('Composition').contentWindow.getSelection();
    	
    	if(a==''){
    		a=str;
    	}
    	linko= "<A target=\"_blank\" HREF=\""+str+"\">"+a+"</A> ";
    	formatC('insertHtml', linko);
    Ciao

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.