Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    78

    Caricare una stringa priva dei caretteri di escape

    Problema: devo prelevare una stringa da Blogger, stringa che però è scritta diciamo "normalmente", senza i caratteri di escape prima di apici, virgolette, ecc.. La sintassi:

    var stringa = '<data:stringa_che_mi_serve>';

    funziona come si deve finché la stringa che mi serve non contiene apici, ma se invece ce ne sono, va tutto a ramengo e la stringa non viene caricata come variabile.

    C'è modo di ovviare alla cosa, magari mediante una qualche codifica?

    Grazie anticipate per l'attenzione.

  2. #2
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998

    Re: Caricare una stringa priva dei caretteri di escape

    Originariamente inviato da axlman
    Problema: devo prelevare una stringa da Blogger,
    Se la stringa, come sospetto, viene inserita lato server, deve pervenire gia' "escapata" al javascript, quindi l'onere dell'operazione spetta al linguaggio che usi lato server, il javascript non puo' farci nulla.

    ciao
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    78
    Decide Blogger come mandare la stringa, cioè scritta senza escape, quindi niente da fare: grazie per la risposta, almeno evito di perderci altro tempo.

  4. #4
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Non conosco Blogger ed il "prelevare" e "mandare" fa riferimento ad un meccanismo che mi e' ignoto... se chiarisci ci si puo' ragionare.

    ciao
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    78
    Non è che su Blogger facciano i salti mortali per rendere la piattaforma trasparente e cristallina, comunque, da quel che ho capito funziona così:
    memorizzano da qualche parte il contenuto, ad esempio, dei commenti e per mostrarli nella pagina usano questa sintassi proprietaria nel codice HTML (la posto semplificando al massimo)

    codice:
    <dl class='comments-block' id='comments-block'>
    
    <b:loop values='data:post.comments' var='comment'>
    
        <dt expr:class='&quot;comment-author &quot; + data:comment.authorClass'  expr:id='data:comment.anchorName'>
               <a expr:name='data:comment.anchorName'/>
               <b:if cond='data:comment.authorUrl'>
                  <data:comment.author/>
               <b:else/>
                  <data:comment.author/>
               </b:if>
               ha commentato:
        </dt>
    
        <dd class='comment-body'>
               <b:if cond='data:comment.isDeleted'>
                  <div class='deleted-comment'>
                     <data:comment.body/>
                  </div>
               <b:else/>
                     <data:comment.body/>
               </b:if>
        </dd>
    
    </b:loop>
    
    </dl>
    È abbastanza semplice da capire il senso e come si vede le informazioni salienti tipo il contenuto del corpo del commento o il nome dell'autore o l'ancora del commento, eccetera (i vari <data:...>) la pagina li va a pescare da qualche parte nel database di Blogger.
    In particolare il contenuto del commento è indicato come

    <data:comment.body/>

    ed è fornito come stringa di caratteri diciamo "semplice", senza escape o altro. Almeno da quello che ho potuto capire facendo prove personale ché, come ho detto, le informazioni precise non abbondano da parte di Blogger.

    Forse da qualche parte Blogger ha anche memorizzato il corpo del commento non come stringa semplice ma come stringa codificata in qualche modo che sia usabile da JavaScript (quindi con dentro gli escape o o codificata in qualche altro modo), ma non ho idea se esista e tanto meno come richiamarla, nel caso: se qualcuno ne sapesse di più, ben venga.

  6. #6
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Non e' chiaro come tu venga in possesso di quei codici.... includi un loro file o script o cosa?

    ciao
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    78
    Non ho ben capito cosa intendi. Il codice che ho messo fa parte del codice HTML del mio blog su Blogger: non c'è una serie di pagine da modificare ma una pagina unica di codice, ed è Blogger che di volta in volta si preoccupa di capire quale pagina viene caricata e cosa metterci.

    Nella pagina di codice di Blogger c'è scritto (è quello di prima ancor più semplificato):

    codice:
    <b:loop values='data:post.comments' var='comment'>
    
        <dd class='comment-body>
             <data:comment.body/>
        </dd>
    
    </b:loop>
    che sono le righe che servono per caricare i commenti ad un post.
    Io non ho idea di dove stiano i commenti e cosa contengono oppure quali siano i valori della variabile «comment» che viene usata per effettuare il loop: quando qualcuno si collega ad una pagina del mio blog è Blogger che di volta in volta sa quale pagina viene richiesta e va a prendere i commenti di quella pagina. I commenti io non li vedo, non so dove stanno, posso solo richiamarli: con il comando che ho scritto vengono stampati, io volevo usarli come stringhe in uno script che sostituisca le emoticon con i corrispondenti smiley (programmino che anche io arrivo a scrivere, basta usare i replace e document.write).



    Esiste un altro script che fa questa cosa ma non lavorando direttamente sulle stringhe, bensì lavorando con il DOM (almeno credo, che conosco ben poco la materia).
    Agisce quando la pagina è caricata completamente e mantiene inalterato il codice HTML sorgente della pagina, però a schermo al posto delle emoticon fa comparire gli smiley:

    codice:
    document.getElementsByClassName = function(clsName) {
        var retVal = new Array();
        var elements = document.getElementsByTagName("*");
        for (var i = 0 ; i < elements.length ; i++) {
            if (elements[i].className.indexOf(" ") >= 0) {
                var classes = elements[i].className.split(" ");
                for(var j = 0;j < classes.length;j++){
                    if(classes[j] == clsName)
                        retVal.push(elements[i]);
                }
            }
            else if (elements[i].className == clsName)
                retVal.push(elements[i]);
        }
        return retVal;
    }
    
    function addSmiley(dummy) {
    
        var d = [];
        var i=0;
        var def = ['NOME_DELLA_CLASSE_CUI_APPLICARE_QUESTO_SCRIPT' , 'NOME_ALTRA_CLASSE_CUI_APPLICARLO', ....];
    
        for (i=0 ; i<def.length ; i++) {
    	var content = document.getElementsByClassName(def[i]);
    	for (var j=0 ; j<content.length ; j++)
    		d.push(content[j]);
        }
    
        for (i=0 ; i<arguments.length ; i++) {
    	var content = document.getElementsByClassName(arguments[i]);
    	for (var m=0 ; m<content.length ; m++)
    		d.push(content[m]);
        }
    
        for (var i=0;i<d.length;i++) { 
    
            d[i].innerHTML = d[i].innerHTML.replace(/:-?\)/g, '  ');
    
            d[i].innerHTML = d[i].innerHTML.replace(/:-?\(/g, '  ');
    
            .........
        }
    
    }
    
    function addLoadEvent(func) {
    
        var oldonload = window.onload;
    
        if (typeof window.onload != 'function') {
             window.onload = func;
        }
    
        else {
             window.onload = function() {
                  oldonload();
                  func();
             }
        }
    }
    
    addLoadEvent (function(){
            addSmiley();
    });
    Tu mi dirai: e usa questo codice, allora.

    Il fatto è che funzionare, funziona, ma mi fa casini con le espressioni che sono contenute nei tag (sostituisce anche quelle e alcuni tag mi vanno a ramengo): io questo codice non sono riuscito a capire bene come lavora, quindi non so come modificarlo per farglieli evitare, cioè per fargli fare le sostituzioni solo delle espressioni che non sono tra parentesi uncinate.
    Esempio per farmi capire: per funzionare bene dovrebbe sostituire "abc" con "xyz", ma solo e unicamente se "abc" non è contenuto in un tag:

    abcdef ghi <huskd abcgjeu> jsdoi abc kdhui

    dovrebbe diventare

    xyzdef ghi <huskd abcgjeu> jsdoi xyz kdhui

    e non

    xyzdef ghi <huskd xyzgjeu> jsdoi xyz kdhui

    Qualche suggerimento? Qualche anima pia può spiegarmi come funziona il codice che ho messo così che posso aggiustarlo e/o suggerirmi direttamente come modificarlo?

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.