Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    codifica url e tronca parole lunghe

    salve a tutti, avrei bisogno di una mano con il seguente script. potete testarlo a questo indirizzo:

    http://www.scuoladimusica.org/tests/...he_lunghe.html

    function tagliaEncode(chi) {

    strl = document.getElementById(chi).innerHTML;


    strspezz = new Array();
    strspezz = strl.split(" ");
    lungarr = strspezz.length;
    strnuova = "";



    for (i=0; i<lungarr; i++) { // crea array di parole dal testo (for 1)

    parolaspezz = new Array();
    parolaspezz = strspezz[i].split("");
    lungparolaspezz = parolaspezz.length;

    if (lungparolaspezz >= 10) { // se la parola è troppo lunga (if 1)

    indir = strspezz[i].indexOf("http://")
    indirvero = strspezz[i]

    if (indir != -1) { // se è un url codifica l'url (if 2)

    nuovoindir = strspezz[i].replace(indirvero, "<a href=\"" + indirvero + "\">" + indirvero.substring(0, 20) + "...<\/a>")
    strspezz[i] = nuovoindir;

    } // (chiudi if 2)


    else {

    nuovastr = new Array();
    nuovastr = strspezz[i].split("");
    nuovastrlung = nuovastr.length;
    ns = nuovastrlung/2;
    cambia = strspezz[i].substring(0, ns);
    cambiato = cambia + "
    ";
    strspezz[i] = strspezz[i].replace(cambia, cambiato);





    }



    } // (chiudi if 1)


    strnuova += " " + strspezz[i];

    } //(chiudi for 1)


    document.getElementById(chi).innerHTML = strnuova;

    }

    serve a tagliare le parole troppo lunghe per non scombinare il layout e contemporaneamente rendere linkabili gli urls. viene utilizzato in una pagina nella quale tutto il testo è paragonabile ad un post su di un forum: un utente deve scrivere il proprio curriculum e puo' inserire anche urls, che saranno resi automaticamente links nella pagina che visualizzerà il loro profilo (tramite un <%= objRS("curriculum") %>: d'altra parte vorrei evitare lo scombinamento (volontario o meno) della pagina, quindi vorrei tagliare le parole troppo lunghe.

    dato che le due cose insieme apparentemente in asp non si possono fare, vorrei farlo in javascript, solo che ho qualche problema quando lo testo nell'applicazione dove dovrebbe girare. per l'esattezza mi "codifica" anche qualche parola precedente la stringa da rendere linkabile...

    sono sicuro che ci siano errori logici nello script, anche se all'apparenza funziona tutto; sono anche sicuro che si possa ottimizzare e velocizzare la cosa.

    mi date una mano a farlo?

  2. #2
    up... ancora non sono riuscito a trovare l'errore.

  3. #3
    forse non ho capito ancora bene l'utilizzo di split(): se io faccio

    mioarr = stringa.split("http://")

    "http://" non dovrebbe comparirmi nella prima o nella seconda parte dell'array? :master:

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Originariamente inviato da yuri refolo
    forse non ho capito ancora bene l'utilizzo di split(): se io faccio

    mioarr = stringa.split("http://")

    "http://" non dovrebbe comparirmi nella prima o nella seconda parte dell'array? :master:
    No, il separatore non compare in nessuna parte.
    Esempio:
    var dataa = "18/02/2004"
    var spez = data.split("/");

    alert (spez[0]); // visualizza 18
    alert (spez[1]); // visualizza 02
    alert (spez[2]); // visualizza 2004

    Il separatore (in questo caso la slash) non fa parte di nessuna parte.

    Ciao
    Michele
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  5. #5
    Originariamente inviato da Mich_
    No, il separatore non compare in nessuna parte.
    Esempio:
    var dataa = "18/02/2004"
    var spez = data.split("/");

    alert (spez[0]); // visualizza 18
    alert (spez[1]); // visualizza 02
    alert (spez[2]); // visualizza 2004

    Il separatore (in questo caso la slash) non fa parte di nessuna parte.

    Ciao
    Michele
    e come posso fare per prendere l'url / gli urls digitati?

    io avrei una mezza idea

    prima_parte_inutile = stringa.substring(0, stringa.indexOf("http://"));

    indirizzo = stringa.substring(stringa.indexOf("http://"), stringa.indexOf(" ");

    indirizzo += "<a href=\"" + indirizzo + "\">" + indirizzo.substring(0, 10) + "..." + "<\/a>"

    ma non so come andare avanti!

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Anzitutto io non userei mai .substring(): il comportamento dipende dalla versione di JS del browser; uso .substr() invece.

    Dai un'occhiata alle proprieta` dell'oggetto window.location (ad esembio in devGuru): non esiste solo .href .

    Comunque con delle RegExp opportune si riesce a spezzare quello che vuoi, se non puoi usare le proprieta` direttamente:

    var spez = str.match(/(.+\/\/)(.*)(\:.+)??\/(.+)/);

    spez[0] contiene http://
    spez[1] contiene www.host.it
    spez[2] contiene :port (se presente)
    spez[3] contiene tutto il resto

    Con una regexp diversa si puo` suddividere ulteriormente.

    Ciao
    Michele
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  7. #7
    Originariamente inviato da Mich_
    Anzitutto io non userei mai .substring(): il comportamento dipende dalla versione di JS del browser; uso .substr() invece.
    qui dice il contrario :master:

    http://www.quirksmode.org/js/strings.html#substr

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Veramente quella pagina dice tutt'altra cosa.

    Dice che substr() non e` supportato da NN3- e da IE3- .
    Tuttavia quei browser hanno cosi` tante funzionalita` JS non supportate, che ormai non riescono piu` a visualizzare le pagine correttamente.

    Io parlavo del fatto che substring() si aspetta parametri differenti fra JS1.1 e JS1.2 (supportati da NN4.0 e da NN4.5 rispettivamente). Ora la versione di JS piu` aggiornata e` la 1.5 (credo), ma nella codifica attuale non si puo` piu` specificare quale versione usare: si scrive solo
    <script type="text/javascript">
    e questo ti impedisce di sapere a priori quale codifica usare.
    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.