Javascript 检测低处理速度
我有一个web应用程序,它本质上是一个用户可以输入的文本框 用户在框中键入内容,然后单击提交按钮,然后执行脚本以显示图像 使用AngularJS,我还可以在用户在框中键入内容时调用相同的JS函数,无需单击按钮,并提供更流畅的体验 然而,这意味着这个相当冗长和密集的函数可以每秒调用多次,特别是对于快速打字机。在桌面上,这没有问题。在手机上——至少是入门级手机上——速度非常慢,是一种可怕的体验 自动提交行为由一个布尔变量控制,该布尔变量默认为Javascript 检测低处理速度,javascript,mobile,Javascript,Mobile,我有一个web应用程序,它本质上是一个用户可以输入的文本框 用户在框中键入内容,然后单击提交按钮,然后执行脚本以显示图像 使用AngularJS,我还可以在用户在框中键入内容时调用相同的JS函数,无需单击按钮,并提供更流畅的体验 然而,这意味着这个相当冗长和密集的函数可以每秒调用多次,特别是对于快速打字机。在桌面上,这没有问题。在手机上——至少是入门级手机上——速度非常慢,是一种可怕的体验 自动提交行为由一个布尔变量控制,该布尔变量默认为TRUE 在手机上,我想将此变量设置为FALSE。对于速度
TRUE
在手机上,我想将此变量设置为
FALSE
。对于速度较慢的设备,最好将其设置为false,但我认为这不可能检测到。最简单的方法是什么?以下一些答案可能会帮助您:
(但为了好玩……)
嗯。。。先用不可靠的方法。。您可以在加载页面时执行性能计时器
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);
}
@RobG屏幕大小与任何事情都有什么关系?如果你想用按键来做一些事情,为什么不使用debounce来提高性能。不可能区分入门级手机和高性能手机。你需要改变你的策略。@RobG屏幕大小与此无关,它与处理速度有关。该脚本为用户键入的任何短语生成唯一图像。例如,“Hello my na”是与“Hello my nam”不同的图像,等等。因此,当打开“自动提交”时,每个按键都会生成不同的图像。如果用户愿意,可以将其关闭;我只是想控制默认的行为。@snazzybouche通常问题是针对不同大小的屏幕调整大小,我没有意识到这只是关于处理能力,而这不一定与移动设备有关。也许问题应该是“如何检测低性能主机”或类似的问题。有些移动设备非常强大,有些非移动设备则不然。任何其他确定性能的方法都必须做类似的事情。“我能以多快的速度让这个东西做x?!”: