Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    215

    JS meglio inline o esterno?

    In un piccolo Sito di circa 100 pagine .htm al fine di creare un menù con rollover delle immagini ho inserito in ciascuna pagina la seguente istruzione:

    <script LANGUAGE="JavaScript">
    <!--

    a11=new Image(90,35)
    a11.src="go.gif"
    a12=new Image(90,35)
    a12.src="go1.gif"
    a21=new Image(90,35)
    a21.src="home.gif"
    a22=new Image(90,35)
    a22.src="home1.gif"
    a31=new Image(90,35)
    a31.src="mail.gif"
    a32=new Image(90,35)
    a32.src="mail1.gif"
    a51=new Image(90,35)
    a51.src="car.gif"
    a52=new Image(90,35)
    a52.src="car1.gif"
    a61=new Image(90,35)
    a61.src="ord.gif"
    a62=new Image(90,35)
    a62.src="ord1.gif"
    a71=new Image(90,35)
    a71.src="spd.gif"
    a72=new Image(90,35)
    a72.src="spd1.gif"
    a91=new Image(90,35)
    a91.src="aiu.gif"
    a92=new Image(90,35)
    a92.src="aiu1.gif"

    function filter(imagename,objectsrc){
    if (document.images)
    document.images[imagename].src=eval(objectsrc+".src")
    }

    //-->
    </script>

    Avrei alcune domande:
    1) pensate sia meglio creare un .js esterno?
    2) Una volta caricato la prima volta (il file .js esterno), il browser lo legge dalla cache come avviene per i file .css?
    3) Ci sarebbero miglioramenti in termini di velocità di caricamento delle pagine .htm?

    Grazie e buon lavoro

  2. #2
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    la risposta è si per tutte e tre le domande (l'ultima poi è diretta conseguenza delle prime due)

    Ciao
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Altre precisazioni:

    - filter e` parola chiave in qualche browser: converrebbe cambiare il nome della funzione.

    - eval() e` funzione deprecata e molto lenta; inoltre nel tuo caso e` inutile:
    document.images[imagename].src = objectsrc+".src";
    oppure:
    document.images[imagename].src = "./"+objectsrc+".src";
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    215
    - filter e` parola chiave in qualche browser: converrebbe cambiare il nome della funzione.
    - eval() e` funzione deprecata e molto lenta; inoltre nel tuo caso e` inutile:
    document.images[imagename].src = objectsrc+".src";
    oppure:
    document.images[imagename].src = "./"+objectsrc+".src";
    Mi potresti postare come diventerebbe esattamente questa funzione:
    function filter(imagename,objectsrc){
    if (document.images)
    document.images[imagename].src=eval(objectsrc+".src")
    }


    Grazie

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    L'avevo gia` scritto, comunque:
    codice:
    function myfilter(imagename,objectsrc){
      if (document.images) {
        document.images[imagename].src = "./"+objectsrc+".src";
      }
    }
    Non capisco l'estensione .src alle immagini, ma c'era anche prima.
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    215
    function myfilter(imagename,objectsrc){
    if (document.images) {
    document.images[imagename].src = "./"+objectsrc+".src";
    }
    Mi da un errore...

    Questo è un esempio del codice .htm che dovrebbe creare il rollover tramite la funzione JS:

    [img]home.gif[/img]

    Suggerimenti?

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Che errore ti da`? Su quale linea?

    Esistono i file a22.src e a21.src ?

    Tali file sono delle immagini?
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  8. #8
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    215
    Questo è parte del codice attuale e funzionante

    <script LANGUAGE="JavaScript">
    <!--
    b21=new Image(130,30)
    b21.src="home.gif"
    b22=new Image(130,30)
    b22.src="home1.gif"

    function filter(imagename,objectsrc){
    if (document.images)
    document.images[imagename].src=eval(objectsrc+".src")
    }

    //-->
    </script>

    e che viene richiamato all'interno della pagina .htm nel seguente modo:
    [img]home.gif[/img]

    Se modifico il js come da te suggerito in:

    <script LANGUAGE="JavaScript">
    <!--
    b21=new Image(130,30)
    b21.src="home.gif"
    b22=new Image(130,30)
    b22.src="home1.gif"

    function filter(imagename,objectsrc){
    if (document.images) {
    document.images[imagename].src = "./"+objectsrc+".src";
    }

    //-->
    </script>

    Ottengo il seguente errore:
    Linea: 108 (Fa riferimento alla riga <a href="index.htm" ecc...)
    Carattere: 1
    Errore: previsto oggetto
    Codice: 0

    Purtroppo non so praticamente nulla di JS...

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Ho capito: b22 non e` una stringa (come immaginavo), ma una variabile JS che rappresenta un oggetto.

    Quindi e` chiaro che la sintassi che avevo suggerito non funziona. Prova cosi`:
    onmouseover="filter('b20', b22);" // ho tolto gli apici al secondo parametro
    Poi la funzione:
    codice:
    function myfilter(imagename,objectsrc){
      if (document.images) {
        document.images[imagename].src = objectsrc.src;
      }
    }
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  10. #10
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    215

    Va in parte...

    nel senso che non dà più nessun errore JS ma quando si effettua il rollover successivamente al posto della .gif rimane un'immagine "vuota".

    Ti ringrazio ugualmente per l'interessamento.

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.