Verificare il numero di argomenti passati ad una funzione in Javascript

Potremmo trovarci nella necessità di verificare se il numero di argomenti passati ad una funzione che abbiamo precedentemente dichiarato sia uguale al numero di argomenti che noi avevamo previsto per tale funzione.
In questo caso possiamo ricorrere all’oggetto arguments e alla sua proprietà callee che viene utilizzata per chiamare la funzione a cui arguments fa riferimento:

function verificaArguments(args) {
    var parametri_passati = args.length,
        parametri_previsti = args.callee.length;
    if (parametri_passati != parametri_previsti) {
        throw new Error("Numero di argomenti passari errato; Previsti: " + parametri_previsti + ", parametri passati " + parametri_passati);
    }
}

Tale funzione può essere utilizzata in modo semplicissimo:

function somma(a,b) {
    verificaArguments(arguments); // Se i parametri passati sono diversi lancerà un'eccezione come previsto
    return a + b;
}

Numeri casuali in Javascript

Molto spesso abbiamo la necessità di ottenere un numero casuale in Javascript.
C’è una funzione molto utile denominata Math.random() che restituisce un numero casuale tra 0 e 1, ma se ci servisse che il numero fosse contenuto in un intervallo (ad esempio un numero tra 10 e 20 con estremi compresi)?

var massimo = 20,
    minimo = 10;
function numeroCasuale(massimo, minimo) {
    return Math.floor( Math.random() * (massimo - minimo + 1) ) + minimo;
}
numeroCasuale(massimo, minimo);

Esaminando rapidamente il codice noteremo che Math.random() genera un numero casuale tra 0 e 1 (con 0 incluso e 1 escluso), tale numero viene poi moltiplicato per la differenza tra ‘massimo’ e ‘minimo’ a cui viene sommato 1 poichè Math.random() non genererà mai ‘1’, ottenendo così un numero casuale tra 0 e la differenza tra ‘massimo’ e ‘minimo’, ma ciò che noi vogliamo è avere un numero casuale che sia almeno grande come ‘minimo’ quindi arrotondiamo per difetto al numero intero più prossimo con Math.floor() e sommiamo ‘minimo’.

Capire se il sito è visualizzato da mobile in jQuery

Con una piccola espressione regolare possiamo capire se i visitatore sta visualizzando il sito da un dispositivo mobile:

if( /Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent) ) {
    // fate qualcosa...
}

Lo script altro non fa che verificare se nella stringa di testo dell’user agent sono presenti le parole Android, webOS, iPhone, iPad, iPod o Blackberry comprendo così una fascia sufficiente di dispositivi.

Follie HTML & CSS 2: Il Box Model

Questa serie include dei rapidi e semplici consigli su dei problemi che prima o poi capitano a tutti i web designer.

Perchè se io imposto nei CSS la width di un div a 200px quando poi vado a controllare è di 220px? Magari semplicemente perchè è stato impostato un padding di 10px!
Proprio così, di default i css sommano bordi e padding alla dimensione dichiarata, il che non è un grossissimo problema se lavoriamo con misure fisse, dalle quali è possibile sottrarre la dimensione del border e del padding ma se utilizzassimo ad esempio una percentuale come larghezza o altezza?

*, *:before, *:after {
   -moz-box-sizing: border-box;
   -webkit-box-sizing: border-box;
   box-sizing: border-box;
}

Questa è la soluzione, impostando il valore border-box per il parametro box-sizing indichiamo al browser che la dimensione che noi dichiariamo per un elemento dev’essere riferita all’elemento nella sua interezza, i border e il padding verranno dunque sottratti alla dimensione da noi specificata automaticamente.