Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/434.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如果计算机运行缓慢,请跳过一些代码_Javascript_Jquery - Fatal编程技术网

Javascript 如果计算机运行缓慢,请跳过一些代码

Javascript 如果计算机运行缓慢,请跳过一些代码,javascript,jquery,Javascript,Jquery,有没有办法检测一台计算机是否运行缓慢,并且没有运行某些代码(关闭jQuery动画,或者如果速度快,只运行一个函数) 我知道这个问题可能真的很琐碎,但我注意到,在一些速度较慢的计算机上,即使是最简单的移动某些东西的边距动画也会在闪光灯中完成,这看起来不太好 更新: 我试图运行的代码只是一堆动画;它们都需要相同的时间,但在较慢的浏览器上,动画是分段的,就像你在观看缓冲视频时看到的一样。运行javascript时,你没有事先了解目标计算机性能的特权。我能想到的唯一一件事就是运行一个函数,进行一些计算并

有没有办法检测一台计算机是否运行缓慢,并且没有运行某些代码(关闭jQuery动画,或者如果速度快,只运行一个函数)

我知道这个问题可能真的很琐碎,但我注意到,在一些速度较慢的计算机上,即使是最简单的移动某些东西的边距动画也会在闪光灯中完成,这看起来不太好

更新:

我试图运行的代码只是一堆动画;它们都需要相同的时间,但在较慢的浏览器上,动画是分段的,就像你在观看缓冲视频时看到的一样。

运行javascript时,你没有事先了解目标计算机性能的特权。我能想到的唯一一件事就是运行一个函数,进行一些计算并测量所花费的时间。该功能必须进行足够数量的计算,以确保运行所需的时间代表机器的性能


一般来说,我建议不要做这样的性能测试,因为它需要目标机器上的资源,这是用户通常不喜欢的。但也许您可以测量完成第一个动画所需的时间,如果太慢,请禁用后续动画。

我认为有两种选择:

  • 让用户决定-给用户一个“低带宽/低规格”选项,单击该选项将显示更简单的站点版本

  • 尝试检测慢速机器-您可以尝试使用超时脚本检测慢速机器-如果动画/加载未在特定时间内完成,请切换到更简单的站点版本。这种方法的缺点是,您不知道脚本为什么超时——可能是因为连接不好,或者用户在加载其他东西的同时暂时减慢了机器的速度

  • 希望这能给你一些想法


    Josh

    最简单的解决方案是让用户选择一个复选框,但另一方面,您可以尝试为计算机的第一个动画计时,如果超过某个时间限制,则关闭其余动画。。。例如

    var start = new Date();
    //... some jQuery animation
    var end = new Date();
    var diff = end - start;
    

    然后,例如,如果动画需要1.5秒,而时间差大约为5秒,则关闭所有剩余的动画。

    鉴于JavaScript在部分信任环境中运行,我认为您将无法获得任何操作系统级别的信息


    你能做的最好的事情就是测试“响应性”。一种可能的方法是开始播放完整的动画,并通过比较目标帧速率和“真实”帧速率来检测延迟。然后,您可以简单地跳过动画(代码)的位,以减少计算时间,从而相应地提高响应速度/帧速率。这本质上就是有多少桌面游戏检测到延迟,从而降低了动画的复杂性。我不能保证它在使用JavaScript的浏览器中同样有效,但肯定值得一试。

    我想指出,如果你想让用户决定(我认为这是一个好主意),你应该明确你问的是计算机速度,而不是连接速度或带宽。用户可能有一台速度非常快的笔记本电脑,但使用的是慢速公共wi-fi连接,反之亦然。因为Javascript是客户端的,所以重要的只是计算机的速度。

    我猜您想要关闭的代码需要花费大量的时间来运行

    我建议你:

    • 开始执行此代码
    • 在部分执行之后,看看实时性降低了多少
    • 如果执行的实时性太高(即,如果代码执行得太慢),则取消执行,而不是完成它

    性能测试实际上可以在动画播放时进行,并且(实际上)不使用额外的资源。我看不出有什么理由不这样做,因为你几乎可以免费获得一个相当有效的反应测试。动画占用了计算机大量的计算时间,这一事实可能会让用户更加恼火!仅作澄清,最后两行必须在动画完成后执行,即在动画回调中执行。这不是一个真正的答案,但我无论如何都支持它,因为这是一个更流行的答案似乎忽略了的重要点。