Altai90, вот, стало немного теплее. Попробуйте перечитать свой вопрос и вот этот вот комментарий и сравнить где больше смысла. Я же не владею телепатией, и мог только догадываться какая у вас "суть вопроса".
В чем проблема с реализацией? Дробите крупные задачи на более мелкие, если некая эталонная задача выполняется слишком долго - делайте троттлинг, чтобы пользователь не завис намертво.
Егор Живагин, да без разницы. Консоль, кстати не везде есть.
Altai90, я понимаю, вопрос был "где почитать". Вы конечно можете поискать специальные книги об этом, мало ли. Может какой-нибудь автор таки сумеет выжать из этой темы научный труд на сотни страниц.
Вообще сама постановка вопроса у вас с ошибкой. Не может никакая библиотечка из браузера замерять "нагрузку на компьютер", никто ей этого не даст по соображениям безопасности. Единственное что она может - замерять время между какими-то событиями и на основании этого что-то там предпринимать. Почему это время изменилось - не этой библиотечки дело. Может я приоритет браузеру поменял, или частоту процессора снизил или запустил 50 процессов архиваторов, и они сожрали весь проц.
Евгений Чефранов, примерно так: jsfiddle.net/5ywmpa7x
код не проверял, лениво собирать тестовый html
Обратите внимание, большая часть "тяжелых" действий вынесена за пределы обрботчика scroll и выполняется один раз.
по хорошему надо бы туда добавить пересчет этих координат при ресайзе.
Евгений Чефранов, в каком смысле пожиралка батареи?
Ну, у вас при каждом событии scroll (а это может быть много раз в секунду) производится выборка соответствующих блоков и получение их координат, хотя они не меняются.
и ДВАЖДЫ происходит выборка всех ссылок из меню, которые в общем-то тоже не меняются. И еще два изменения класса active, даже в том случае, когда ничего не поменялось. Это пи*дец. Вероятно работу этой хреновины можно ускорить на порядки (в сотни или тысячи раз).
И то, что вы на мощном железе вы не замечаете тормозов не значит, что эта штука не жрет батарею.