我有一个网络应用程序,它本质上是一个用户可以输入的文本框。
用户在框中键入内容,然后单击“提交”按钮,并执行脚本以显示图像。
使用AngularJS我也可以在用户输入框中时调用相同的JS函数,无需单击按钮并提供更流畅的体验。
但是,这意味着这个相当冗长且密集的功能可以每秒多次调用,特别是对于快速打字机。在桌面上,这没问题。在移动设备上 - 至少是入门级移动设备 - 它非常慢,而且是一种可怕的体验。
自动提交行为由默认为TRUE
的布尔变量控制。
在移动设备上,我想将此变量设置为FALSE
。更好的只是将它设置为假的慢速设备,但我认为没有可能检测到。最简单的方法是什么?
答案 0 :(得分:1)
您可以使用debounce功能仅在X时间之后运行该功能以停止输入。在this文章中,您可以找到如何实现它
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);
}
答案 1 :(得分:0)
其中一些答案可能对您有所帮助:
https://stackoverflow.com/search?q=determine+mobile
(但为了好玩......) Welll ......首先是不可思议的方式..你可以在加载页面时做一个性能计时器。
就像我说的那样......人们会争辩说a)你在浪费时间和b)你在浪费电池。 我如果以后真的能改善用户体验,就不会提出这个论点。
还有许多人用来确定浏览器“类型”及其提供的功能的库。