Я пишу веб-сторінку, яка відстежує місце перебування користувача на вертикально прокручуваній веб-сторінці. Зараз слухаю scroll
подія, але це "стріляють занадто часто. Що я хотів би зробити, це послухати щось на зразок scroll end
подія, але це не існує. Я прочитав кілька відповідей на StackOverflow, в тому числі з використанням тайм-ауту, і я думаю, що вирішив використати jQuery debounce
метод зробити щось подібне:
$(window).scroll($.debounce( 250, true, function(){
$("#scrollMsg").html("SCROLLING!");
} ) );
$(window).scroll($.debounce( 250, function(){
$("#scrollMsg").html("DONE!");
} ) );
Мене турбує те, що я все ще можу скучити scroll end
події. Для моєї служби важливо, щоб я завжди зловити end
події, щоб я міг точно відстежувати, декористувач знаходиться на веб-сторінці. Хтось може пролити світло на те, чи є це обґрунтованою проблемою? Я провів кілька побіжних тестів, але я недостатньо впевнений, щоб зателефонувати ...
Відповіді:
1 для відповіді № 1Я думаю, що між ними завжди буде затримкащо "користувач переглядає" яку частину "вашої веб-сторінки та збережену інформацію в БД або де ви коли-небудь зберігаєте цю інформацію, і ви також не можете надіслати запит на отримання кожного разу, коли він прокручує або рухає мишкою, оскільки це призводить до жахливої кількості запитів.
тому, на мій погляд, вам просто потрібно встановити інтервал, який відповідає вашим вимогам, щоб надіслати "серцебиття" на ваш сервер, скажімо, кожні 5 секунд, що насправді є json
дані включають поточне посилання, яке він переглядає таяку частину сторінки разом з будь-якими іншими даними ви можете знайти для себе корисними, наприклад останню активність (це можна виміряти різними способами: напр. остання миша над <body>
рух) таким чином у вас є шанс, як і в майбутньому, додати будь-яку інформацію до цього heart beat
буде доставлено на ваш сервер і надасть вам більше інформації про відстеження.