我有一个Web应用程序,本质上是一个用户可以输入的文本框。
用户在框中键入内容,然后单击"提交"按钮,它将执行脚本以显示图像。
使用 AngularJS,我还可以在用户在框中键入时调用相同的 JS 函数,无需单击按钮并提供更流畅的体验。
但是,这意味着这个相当冗长和密集的函数每秒可以调用多次,特别是对于快速打字机。在桌面上,这没有问题。在移动设备上 - 至少是入门级移动设备 - 它非常慢,是一种可怕的体验。
自动提交行为由默认TRUE
的布尔变量控制。
在移动设备上,我想将此变量设置为 FALSE
.更好的是将其设置为慢速设备的 false,但我认为无法检测到。最简单的方法是什么?
您可以使用去抖动函数仅在 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
(但为了好玩... 嗯......先是摇摇晃晃的方式..您可以在加载页面时执行性能计时器。
- 显示繁忙指示器..
- 创建一个计数器 x++ 1 秒。
- 如果 x> 10000.. 快速设备(总计超出我的屁股数(
- 如果 x <10000.. 慢速设备
- 删除忙音指示器并继续
就像我说的......这很不稳定,人们会争辩说a(你在浪费时间,b(你在浪费电池。如果以后真的改善了用户体验,我不会提出这个论点。
还有许多人用来确定浏览器"类型"及其提供的功能的库。