У меня есть веб-приложение, которое представляет собой текстовое поле, которое пользователь может ввести.
Пользователь вводит в поле, а затем нажимает кнопку "Отправить" и выполняет сценарий для отображения изображения.
Используя AngularJS, я могу также использовать одну и ту же функцию JS всякий раз, когда пользователь вводит ее в поле, удаляя необходимость щелчка по кнопке и предлагая гораздо более плавное воспроизведение.
Однако это означает, что эту довольно длительную и интенсивную функцию можно назвать несколько раз в секунду, особенно для быстрых машин. На рабочем столе это не проблема. На мобильном телефоне - по крайней мере, мобильном уровне начального уровня - он чрезвычайно медленный и ужасный.
Поведение автоматического подчинения контролируется логической переменной, которая по умолчанию равна TRUE
.
На мобильном устройстве я хотел бы установить эту переменную в FALSE
. Еще лучше было бы установить значение false для медленных устройств, но я не думаю, что это можно обнаружить. Какой самый простой способ сделать это?
Вы можете использовать функцию debounce только для запуска функции после X-времени, чтобы прекратить печатать, в этой статье вы можете найти, как ее реализовать
function debounce(func, wait, immediate) {
var timeout;
return function() {
var context = this, args = arguments;
var later = function() {
timeout = null;
if (!immediate) func.apply(context, args);
};
var callNow = immediate && !timeout;
clearTimeout(timeout);
timeout = setTimeout(later, wait);
if (callNow) func.apply(context, args);
};
};
Но если вы все еще хотите определить, является ли это мобильным устройством, вы можете использовать эту небольшую функцию
function isMobile() {
return /Mobi/.test(navigator.userAgent) || /Android/.test(navigator.userAgent);
}
Некоторые из этих ответов могут помочь вам:
https://stackoverflow.com/search?q=determine+mobile
(но для удовольствия...) Уэлл... лаконично, сначала... вы можете сделать таймер производительности при загрузке страницы.
Как я уже сказал, это неудобно, и люди будут спорить: а) вы теряете время и б) вы теряете батарею. Я бы не сделал этого аргумента, если он действительно улучшит работу пользователя позже.
Кроме того, библиотека, используемая многими пользователями для определения типа "браузера" и функций, которые она предоставляет.