Per me piccolo è bello, quindi sto usando questa tecnica:
Nel file CSS:
/* Smartphones ----------- */
@media only screen and (max-width: 760px) {
#some-element { display: none; }
}
Nel file jQuery / JavaScript:
$( document ).ready(function() {
var is_mobile = false;
if( $('#some-element').css('display')=='none') {
is_mobile = true;
}
// now I can use is_mobile to run javascript conditionally
if (is_mobile == true) {
//Conditional script here
}
});
Il mio obiettivo era di avere il mio sito "ottimizzato per dispositivi mobili". Quindi uso CSS Media Query per mostrare / nascondere gli elementi a seconda delle dimensioni dello schermo.
Ad esempio, nella mia versione mobile non voglio attivare la Like Box di Facebook, perché carica tutte quelle immagini e cose del profilo. E questo non va bene per i visitatori mobili. Quindi, oltre a nascondere l'elemento contenitore, lo faccio anche all'interno del blocco di codice jQuery (sopra):
if(!is_mobile) {
(function(d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) return;
js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.net/pt_PT/all.js#xfbml=1&appId=210731252294735";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
}
Puoi vederlo in azione su http://lisboaautentica.com
Sto ancora lavorando sulla versione mobile, quindi non sembra ancora come dovrebbe, al momento di scrivere questo.
Aggiornamento di dekin88
Esiste un'API JavaScript integrata per il rilevamento dei media. Invece di utilizzare la soluzione sopra è sufficiente utilizzare quanto segue:
$(function() {
let isMobile = window.matchMedia("only screen and (max-width: 760px)").matches;
if (isMobile) {
//Conditional script here
}
});
Supporti browser: http://caniuse.com/#feat=matchmedia
Il vantaggio di questo metodo è che non è solo più semplice e più breve, ma è possibile targetizzare condizionatamente diversi dispositivi come smartphone e tablet separatamente, se necessario, senza dover aggiungere elementi fittizi nel DOM.