J'utilise un peu de jQuery sur une page web qui détecte quelle option de menu est à jour, quand afficher le menu mobile, etc. - Je suis en train d'expérimenter ce qui est possible à la minute. Lorsque je consulte la page sur un ordinateur de bureau, le code fonctionne correctement et mon menu mobile et mes onglets se chargent immédiatement lorsque je clique dessus. Lorsque je visualise la page sur un appareil mobile (S5, Android), les temps de chargement du menu à afficher, les onglets à changer, etc. prennent quelques secondes, par opposition à immédiatement. Je ne suis pas sûr si cela est dû à l'efficacité de mon code, ou si je ne devrais pas utiliser des fonctions particulières ou quoi que ce soit. Des idées sur ce qui pourrait causer ce retard?jQuery temps de chargement mobiles
$(document).ready(function() {
function getParam(name) {
name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
results = regex.exec(location.search);
return results == null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
}
var sortElement = currentSort(getParam('sort'));
var itemElement = currentItem(getParam('items'));
$(sortElement.element).addClass('current');
$(itemElement.element).addClass('current');
function currentSort(value) {
var strElement;
switch(value) {
case 'newest' :
strElement = '#newest';
break;
case 'oldest' :
strElement = '#oldest';
break;
case 'alph_desc' :
strElement = '#desc';
break;
case 'alph_asc' :
strElement = '#asc';
break;
case '' :
strElement = '#newest';
break;
} return {
element: strElement
}
}
function currentItem(value) {
var strElement;
switch(value) {
case '10' :
strElement = '#fewer';
break;
case '15' :
strElement = '#few';
break;
case '50' :
strElement = '#more';
break;
case '' :
strElement = '#few';
break;
} return {
element: strElement
}
}
$('#search a').click(function() {
$('#search').html('<form><input class="nav-search" placeholder="Search" type="text" name="search-query"/><input type="submit" value=" "/></form>');
});
function checkWidth() {
var windowSize = $(window).width();
if (windowSize < 1020) {
$('.navigation .container').html('<ul><li class="brand mobile"><a href="/products"></a></li><li class="menu"></li><div class="mobile-menu"><ul><li><a href="/products"><div class="icon product"></div>Products</a></li><!----><li><a href="/personalise"><div class="icon personalise"></div>Personalise</a></li><!----><li id="search"><a><div class="icon search"></div>Search</a></li><!----><li><a href="/basket"><div class="icon basket"></div>Basket</a></li></ul></div></ul>');
$('.mobile-menu').hide();
$('.menu').click(function() {
$('.mobile-menu').slideToggle();
});
} else {
$('.navigation .container').html('<ul><li><a href="/products"><div class="icon product"></div>Products</a></li><!----><li><a href="/personalise"><div class="icon personalise"></div>Personalise</a></li><!----><li class="brand"><a href="/products"></a></li><!----><li id="search"><a><div class="icon search"></div>Search</a></li><!----><li><a href="/basket"><div class="icon basket"></div>Basket</a></li></ul>');
}
}
checkWidth();
$(window).resize(checkWidth);
});
Une autre remarque: ne construisez pas de HTML à partir d'une chaîne de caractères et si vous devez générer du code HTML valide - cela peut expliquer une certaine "lenteur", voyez vos chaînes de menu. – frequent