Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 31

Discussione: PROBLEMA con innerHTML

  1. #1

    PROBLEMA con innerHTML

    Scusate se l'argomento l'ha già trattato qualc'un altro, ma nn ho trovato risposta!

    Ho il problema che il comando innerHTML, trasforma la sequenza caratteri "../" in "http://127.0.0.1/path"
    in cui ovviamente 127.0.0.1 è il server di prova e path è la cartella che contiene la pagina in cui è scritto il rigo in oggetto!

    Come posso fare perchè la variabile contenete i carateri "../" rimangano invariati???

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Posta il codice, perche` quello che dici non mi convince.

    Non credo che venga trasformata una stringa, mentre se quell'oggetto e` un link, allora e` corretto che venga trasformato.

    Probabilmente si puo` aggirare il problema.
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  3. #3
    codice:
    <script>
    <!--
    function add_txt(testo){ 
    if (testo == "") {
    alert('Seleziona solamente testi!')
    } else {
    if (testo == "add_nome_sito") {
    testo_inserire = ""
    };
    if (testo == "add_URL_sito") {
    testo_inserire = "<a href=></a>"
    };
    if (testo == "add_txt_email") {
    testo_inserire = "<a href=mailto:>amministratore</a>"
    };
    if (testo == "cange_date") {
    testo_inserire = "<a href=../../users/modificauser.asp>modificare</a>"
    };
    if (testo == "8") {
    testo_inserire = "PRIMA PAGINA"
    };
    if (testo == "12") {
    testo_inserire = "C N A"
    };
    if (testo == "3") {
    testo_inserire = "OBIETTIVI DEL SITO"
    };
    if (testo == "1") {
    testo_inserire = "REGISTRAZIONE"
    };
    if (testo == "2") {
    testo_inserire = "ESERCIZI"
    };
    if (testo == "6") {
    testo_inserire = "CLINIC"
    };
    if (testo == "13") {
    testo_inserire = "TESTI TECNICI"
    };
    if (testo == "16") {
    testo_inserire = "ARTICOLI & INTERV."
    };
    if (testo == "14") {
    testo_inserire = "RICERCA COACH"
    };
    if (testo == "11") {
    testo_inserire = "FAQ"
    };
    if (testo == "7") {
    testo_inserire = "FORUM"
    };
    if (testo == "4") {
    testo_inserire = "LINK"
    };
    	
    iView.document.body.innerHTML += testo_inserire
    }
    }
    //-->
    </script>

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Tante di quelle stringhe contengono dei link.
    I browser a quel punto possono (a loro piacimento) trasformare gli indirizzi relativi in assoluto subito, oppure al momento in cui vengono usati.
    Dovresti provare con browser diversi, per verificare come si comportano.

    E` una cosa simile a quando gli script contengono document.write() .


    Per cosa ti serve avere gli indirizzi relativi?
    Potresti elaborare le stringhe prima di inserirle e salvarle da qualche altra parte?
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  5. #5
    Per cosa ti serve avere gli indirizzi relativi?
    Re: ho un editor testi, per velocizzare l'inserimento di testi in una news area del sito, quindi con anche la possibilità di preconfezionare link da solo aggiungere, senza lo sbattimento dei codici da inserire manualmente.

    Potresti elaborare le stringhe prima di inserirle e salvarle da qualche altra parte?
    Re: Non capisco cosa vuoi dire.

    Comunque con IE 6, ho anche messo un
    codice:
    alert(testo_inserire)
    prima di
    codice:
    iView.document.body.innerHTML += testo_inserire
    e mi restituisce il link corretto, poi in:
    codice:
    iView.document.body.innerHTML += testo_inserire
    avviene la modifica

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Forse ho capito il problema.

    Quando inserisci il codice i link vengono convertiti in assoluto, ma questo non e` l'indirizzo corretto, dato che e` relativo alla posizione dove poi andranno sistemati, non relativo a dove vengono posizionati per il preview.

    Se e` cosi`, cancella la mia osservazione che non hai capito.

    Non ho una risposta, ma una serie di tentativi che puoi fare:

    1-4. metti uno (o due) backslash davanti al primo punto (o a tutti e due);
    5. applica escape() alla stringa;
    6. trasforma qualche carattere (ad esempio i punti o le slash) nella corrispondente entita` (&amp;qualcosa) o codice ASCII (#0qualcosa).

    Dato che immagino non vuoi far cambiare le cosa all'utente che digita, devi elaborare la stringa dove mettevi l'alert, prima di inserirla nel innerHTML: in tal caso nel primo passaggio la stringa non viene riconosciuta come path e dovrebbe mantenersi uguale; nella successiva elaborazione invece dovrebbe essere riconosciuta come path e quindi trasformata in assoluta (ecco perche` della/e backslash).
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  7. #7
    >La cosa divertente (ironico) è che mi trasforma così:
    per es:
    C N A
    in
    C N A
    mi toglie i singoli apici anche dal target
    Sto provando un po di trattamento caratteri con Replace, per quale motivo mi suggerisci di usare escape()???

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    string.replace() va bene (ma attenzione Replace() non esiste in JS).

    escape() modifica tutti i caratteri che hanno significato nella trasmissione dei dati.

    i singoli apici sono uno di quei caratteri da trattare con le pinze (assieme a " , . ; = + @ # parentesi varie ed altri)
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  9. #9
    come in js replace non funziona????

    testo_inserire = testo_inserire.replace("'", "&#39");

    escape() l'ho capito ma fa un gran casino!

    ho anche provato ad eliminare "../"quello che lo fa impazzire (oltre che a noi) è ..href=
    che modifica

  10. #10
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Il primo parametro di replace e` una regexp, il secondo una stringa.

    testo_inserire = testo_inserire.replace(/\'/g, "\\'");

    slash backslash apice slash g virgola virgolette backslash backslash apice virgolette
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

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.