Вопрос по jquery, javascript – Пропустить код, если компьютер работает медленно

12

Есть ли способ обнаружить, если компьютер работает медленно и не запускает какой-то код (отключив анимацию jQuery или просто запустив функцию, если онаis быстро)?

Я знаю, что этот вопрос, вероятно, действительно тривиален, но я заметил, что на некоторых более медленных компьютерах даже самая простая анимация полей для перемещения чего-либо выполняется во вспышках, что выглядит не очень хорошо.

Обновить:
Код, который я пытаюсь запустить, представляет собой просто набор анимаций; все они занимают одинаковое количество времени, но в более медленных браузерах анимация сегментирована так, как вы видите, когда смотрите видео, которое буферизуется.

Ваш Ответ

6   ответов
7

флажка, но в противном случае вы можете попробовать синхронизировать первую анимацию для компьютера, а затем, если она превышает определенный лимит времени, остальные анимации отключаются ... например...

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

Затем, например, если анимация займет 1,5 секунды, а разница во времени равна 5 секундам, отключите все оставшиеся анимации.

Error: User Rate Limit Exceeded
11

зводительность целевого компьютера. Единственное, о чем я могу думать, - это запустить функцию, выполняющую некоторые вычисления и измеряющую затраченное время. Функция должна выполнить достаточное количество вычислений, чтобы убедиться, что время, затраченное на выполнение, отражает производительность машины.

В общем, я бы посоветовал не проводить такой тест производительности, поскольку он требует ресурсов на целевой машине, что обычно не нравится пользователям. Но, возможно, вы могли бы измерить время, необходимое для завершения первой анимации, и, если оно слишком медленное, отключите последующие.

Error: User Rate Limit ExceededasError: User Rate Limit Exceeded
0

что выполнение кода, который вы хотите отключить, занимает значительное время.

Я предлагаю вам:

Begin to execute this code After it's partially executed, see how much real-time has ellapsed If too much real-time has ellapsed (i.e. if the code is executing too slowly) then cancel execution instead of finishing it.
0

что JavaScript работает в среде с частичным доверием, я думаю, вы не сможете получить какую-либо информацию на уровне ОС.

Лучшее, что вы можете сделать на самом деле, это проверить «отзывчивость». Возможный подход заключается в том, чтобы просто начать воспроизведение полной анимации и обнаружить задержку, сравнивая целевую частоту кадров с «реальной». частота кадров. Затем можно просто пропустить биты анимации (кода), чтобы сократить время вычислений и, таким образом, соответственно улучшить скорость отклика / частоту кадров. По сути, именно столько настольных игр обнаруживают лаги и, следовательно, снижают сложность анимации. Я не могу гарантировать, что он будет одинаково хорошо работать в браузере с JavaScript, но это, безусловно, стоит попробовать.

5

Let the user decide - give a 'low bandwidth/low spec' option to the user which when clicked will display the simpler version of the site.

Try to detect slow machines - you could try to detect a slow machine by using a timeout script - if the animation/loading doesn't complete within a certain time switch to the simpler version of the site. The downside to this method is that you have no idea why the script timed out - perhaps it was a bad connection or the user was loading something else at the same time temporarily slowing their machine.

Надеюсь, что это дает вам некоторые идеи.

мистифицировать

1

что если вы собираетесь оставить это на усмотрение пользователя (что я считаю хорошей идеей), вы должны четко указать, что вы спрашиваете о скорости компьютера, а не о скорости соединения или пропускной способности. У пользователя может быть очень быстрый ноутбук, но он работает с медленным общедоступным Wi-Fi-соединением или наоборот. Поскольку Javascript на стороне клиента, имеет значение только скорость компьютера.

Error: User Rate Limit Exceeded

Похожие вопросы