Ciao,
per utilizzare javascript in modo che non sia intrusivo è meglio utilizzare behaviour o window.onload?
Saluti,
carlostefano
Ciao,
per utilizzare javascript in modo che non sia intrusivo è meglio utilizzare behaviour o window.onload?
Saluti,
carlostefano
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
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ì?
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
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?
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
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.
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 IDOriginariamente 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.
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