Javascript 检测低处理速度

Javascript 检测低处理速度,javascript,mobile,Javascript,Mobile,我有一个web应用程序,它本质上是一个用户可以输入的文本框 用户在框中键入内容,然后单击提交按钮,然后执行脚本以显示图像 使用AngularJS,我还可以在用户在框中键入内容时调用相同的JS函数,无需单击按钮,并提供更流畅的体验 然而,这意味着这个相当冗长和密集的函数可以每秒调用多次,特别是对于快速打字机。在桌面上,这没有问题。在手机上——至少是入门级手机上——速度非常慢,是一种可怕的体验 自动提交行为由一个布尔变量控制,该布尔变量默认为TRUE 在手机上,我想将此变量设置为FALSE。对于速度

我有一个web应用程序,它本质上是一个用户可以输入的文本框

用户在框中键入内容,然后单击提交按钮,然后执行脚本以显示图像

使用AngularJS,我还可以在用户在框中键入内容时调用相同的JS函数,无需单击按钮,并提供更流畅的体验

然而,这意味着这个相当冗长和密集的函数可以每秒调用多次,特别是对于快速打字机。在桌面上,这没有问题。在手机上——至少是入门级手机上——速度非常慢,是一种可怕的体验

自动提交行为由一个布尔变量控制,该布尔变量默认为
TRUE


在手机上,我想将此变量设置为
FALSE
。对于速度较慢的设备,最好将其设置为false,但我认为这不可能检测到。最简单的方法是什么?

以下一些答案可能会帮助您:

(但为了好玩……) 嗯。。。先用不可靠的方法。。您可以在加载页面时执行性能计时器

  • 显示忙指示灯
  • 创建计数器x++1秒
  • 如果x>10000。。快速设备(我的屁股总数)
  • 如果x<10000。。慢速装置
  • 移除忙指示灯并继续
  • 就像我说的。。这是不可靠的,人们会争论a)你在浪费时间,b)你在浪费电池。如果以后它真的改善了用户体验,我就不会这么说了

    还有许多人用来确定浏览器“类型”及其提供的功能的库

    您可以使用函数仅在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);
    }
    

    @RobG屏幕大小与任何事情都有什么关系?如果你想用按键来做一些事情,为什么不使用debounce来提高性能。不可能区分入门级手机和高性能手机。你需要改变你的策略。@RobG屏幕大小与此无关,它与处理速度有关。该脚本为用户键入的任何短语生成唯一图像。例如,“Hello my na”是与“Hello my nam”不同的图像,等等。因此,当打开“自动提交”时,每个按键都会生成不同的图像。如果用户愿意,可以将其关闭;我只是想控制默认的行为。@snazzybouche通常问题是针对不同大小的屏幕调整大小,我没有意识到这只是关于处理能力,而这不一定与移动设备有关。也许问题应该是“如何检测低性能主机”或类似的问题。有些移动设备非常强大,有些非移动设备则不然。任何其他确定性能的方法都必须做类似的事情。“我能以多快的速度让这个东西做x?!”: