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

    Javascript non intrusivo

    Ciao,
    per utilizzare javascript in modo che non sia intrusivo è meglio utilizzare behaviour o window.onload?

    Saluti,
    carlostefano

  2. #2
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    la piccola libreria behaviour gestisce le istruzioni richiamate onload (anche + di una), ma cosi' come altre librerie e semplici script
    window.onload setta il gestore evento onload, sovrascrivendo eventuali onload precedenti e sostituendo la sintassi (intrusiva) <body onload="funzione()">

    parliamo quindi di 2 cose diverse, tecnicamente entrambe non intrusive

    semmai, al fine di ottenere codice distribuibile e utilizzabile in situazioni imprevedibili da utenti non esperti e' meglio permettere la gestione di molteplici onload, per mantenere compatibilita' con altri script gia' presenti nel documento
    quindi behaviour (o + semplicemente qualsiasi script che gestisca moltiplici richiami onload) e' preferibile ad un window.onload perche' quest ultimo puo' venir facilmente sovrascritto
    ciao

  3. #3
    Ciao Xinod,
    io avevo trovato qui la seguente funzione:

    function addEvent(obj, evType, fn){
    if (obj.addEventListener){
    obj.addEventListener(evType, fn, true);
    return true;
    } else if (obj.attachEvent){
    var r = obj.attachEvent("on"+evType, fn);
    return r;
    } else {
    return false;
    }
    }


    Dicono che risolva i problemi di sovrascrittura dei gestori esistenti nel documento...è così?

  4. #4
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    in linea generale si', questo e' quello che fa quello script
    x questo dicevo che non serve usare tutta la libreria behaviour se l' unica funzione a cui si e' interessati e' poter eseguire senza sovrascrivere piu' istruzioni onload

    nota che esistono tante variazioni sul tema
    ci fu anche una competizione un po' di tempo fa sull' argomento
    http://www.quirksmode.org/blog/archi...nt_recodi.html
    che porto' ad altrettante riflessioni

    ciao

  5. #5
    ciao,
    grazie per la risposta. Se in una pagina html scrivo:


    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>Untitled Document</title>
    <script type="text/javascript" src="functiononload.js">
    </script>
    </head>
    <body>
    <div id="templateimage" style="width:200px; height:200px; background-color:#999999;">
    miao
    <div>
    </body>
    </html>


    il contenuto del file functiononload.js è:


    function init() {
    miao = document.getElementById('templateimage');
    miao.onclick = alert('ciao');
    }
    window.onload = init;


    Dovrei ottenere che quando clicco con il mouse sul blocco parta l'avviso, ma questo non succede...
    dove sbaglio?

  6. #6
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    miao.onclick = function(){alert('ciao');}

    il perche' e' spiegato, per esempio, al punto 3 di questa pagina
    http://javascript.html.it/articoli/l...-javascript/2/

    ciao

  7. #7
    Grazie,
    ottimo link...Una cosa però non capisco; ho letto da poco un articolo pubblicato in questo sito in cui si parlava di sistemi non intrusivi di validazione dei forms. Per ottenere questo venivano proposte 3 alternative, di cui quella consigliata era di fare riferimento al campo del form attraverso il nome della classe. Mi chiedo quindi perchè non è stato fatto attraverso l'uso dell'id.

  8. #8
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    Originariamente inviato da carlostefano
    fare riferimento al campo del form attraverso il nome della classe. Mi chiedo quindi perchè non è stato fatto attraverso l'uso dell'id.
    nell' articolo si fa riferimento alla classe per capire il tipo di controllo da effettuare, a questo fine ci sono vari motivi per non usare gli ID
    x es. un id non accetta spazi e l' id viene passato all' invio, non voglio passare cose tipo "nome_valida_minimo3"
    la classe non viene passata e accetta + di un valore con spazio come separatore

    fatto sta che a voler essere precisi non sarebbe semanticamente corretto usare la classe in questo modo

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.