Includere una funzione javascript in un'altro file javascript e risolvere problemi di charset

di il
3 risposte

Includere una funzione javascript in un'altro file javascript e risolvere problemi di charset

In fondo alla mia pagina ho questo codice:

    <script charset="UTF-8" th:src="@{/js/file1.js}"></script>
    <script charset="UTF-8" th:src="@{/js/file2.js}"></script>
Facendo delle modifiche ad una pagina inavvertitamente ho fatto questo errore:

    <script charset="UTF-8" th:src="@{/js/file2.js}"></script>
    <script charset="UTF-8" th:src="@{/js/file1.js}"></script>
ed file2.js ha giustamente smesso di funzionare. Questo perché in file1.js c'è una funzione usata nel file2.js. Per la verità in file1.js ci sono due sole funzioni:

function funzioneUno(parametri...){
	// qui viene usata funzioneDue
}
function funzioneDue(parametri...){
}
In file2.js uso funzioneUno ed in file2.js ci sono tante funzioni.
Le mie domande sono le seguenti:
DOMANDA 1
E' possibile evitare di dover scrivere un codice html tale per cui sia costretto a caricare file1.js prima di file2.js?
DOMANDA 2
Inoltre ho notato che se apro i file .js nel browser e leggo i commenti le lettere accentate non vengono renderizzate correttamente.
I file con estensione .js sono formattati UTF-8 (così dice l'ide...) dunque dove sta il problema? Come faccio a fare in modo che i miei file siano leggibili da qualunque programma con UTF-8? Non c'è un codice da mettere all'inizio del file che suggerisce al programma di usare quel preciso carset? Insomma mi spiacerevve aprire tra una settimana lo stesso file con un altro IDE e leggere:
perché in un array ... c'è ...
Non credo che i browser non renderizzino correttamente UTF-8.

3 Risposte

  • Re: Includere una funzione javascript in un'altro file javascript e risolvere problemi di charset

    La gestione dell'ecoding, e' sempre "un bagno di sangue e lacrime"

    NON BASTA essere sicuri che alla PARTENZA il file sia nell'encoding giusto
    NON BASTA che all'arrivo, sia specificato l'encoding giusto
    SERVE ANCHE the quando il file viene inviato sul canale HTTP, il "metadato" "ContentType", inviato nello header del protocollo di comunicazione, INDICHI l'encoding giusto.

    Invece non e' cosi' nel 99.9% dei casi, in questo momento, "ContentType" e' "ISO-8859" OPPURE non e' specificato e il default e' "ISO-8859".

    MA NON BASTA ancora.

    Un'altra cosa da controllare e' se il browser "FORZA" uno specifico encoding oppure usa quello specificato da ContentType.
    Tutti i browser hanno (o dovrebbero avere, l'ho appena cercato su Edge ma non lo trovo Boh!), nel menu, la possibilita' di specificare quale encoding usare.

    (e probabilmente mi sono dimenticato ancora qualche pezzo in mezzo )

    Diciamo che la regola dovrebbe essere:

    1) NON E' MAI il client a specificare l'encoding
    2) e' SEMPRE E SOLO il server

    Il client accetta quello che c'e' e si adatta.
    E quando spedisce qualcosa al server, lo deve fare nello stesso encoding usato dal server
  • Re: Includere una funzione javascript in un'altro file javascript e risolvere problemi di charset

    Intanto grazie per la risposta. Nelle pagine HTML uso:
    
    <meta charset="UTF-8">
    
    Ho anche provato:
    
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
    
    ma non ho notato cambiamenti. Tra il resto non so se è meglio usare il primo oppure il secondo codice.
    In merito alla seconda domanda ci sono sistemi più furbi rispetto alla mera separazione del codice in file diversi?
  • Re: Includere una funzione javascript in un'altro file javascript e risolvere problemi di charset

    1) Se qualcuno va a leggere il codice dei miei file js e legge i commenti e si accorge che il charset non è ben impostato per un motivo o per l'altro mi importa poco. Quello che mi infastidisce maggiormente è che l'utente possa andare a leggere i miei commenti. Di conseguenza ti faccio un'altra domanda. Esiste qualcosa di simile al seguente codice html anche per javascript?
    <!--/* questo commento non si vede */-->
    Esiste qualche dipendenza interessante di Spring Boot che posso usare per offuscare il mio codice js e magari anche quello di tutta la mia webapp?

    2) Per quanto riguarda la gestione del codice js mi rifiuto di credere che non esiste una soluzione più furba della mia per dividere il codice javascript.
    Al momento ho questa pessima soluzione:
    file1.js (*)
    
    function avviso(){
        alert("ciao!")
    }
    
    file2.js (*)
    
    $(document).ready(function() {
        if ($('#gestioneUtenti').length) {
            avviso();
        }
    });
    
    La tecnica che ho usato è pessima perché se nel file html carico file2.js prima di file1.js l'alert non compare perché non viene letto. Sapresti dirmi come posso risolvere?
    (*) E' un codice esemplificativo, non uso 2 file per un alert. In file1.js ho una funzione molto lunga che non voglio mettere in testa a file2.js.
Devi accedere o registrarti per scrivere nel forum
3 risposte