|
Как определить что страница прокручена до конца?
|
|||
---|---|---|---|
#18+
voraa, за такое надо голову сворачивать ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2020, 23:02 |
|
Как определить что страница прокручена до конца?
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2020, 23:09 |
|
Как определить что страница прокручена до конца?
|
|||
---|---|---|---|
#18+
вадя Ты не понимаешь. Скрипт надо писать так, что бы он был универсальным, не зависел от того, что там творится раньше на странице. Куда бы ты не вставил свой сторожевой элемент (например в body) , всегда есть вероятность, что кто то написал или напишет потом что то вроде document.body.appendChild (тра-та -та) Или какой-нибудь абсолютно позиционируемый элемент неожиданно вылезет ниже, как здесь https://jsfiddle.net/voraa/cg175zj4/18/ ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2020, 23:39 |
|
Как определить что страница прокручена до конца?
|
|||
---|---|---|---|
#18+
voraa Ты не понимаешь. если следовать твоему - этот IntersectionObserver вообще надо исключить из стандарта, voraa всегда есть вероятность, что кто то написал или напишет потом ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2020, 07:58 |
|
Как определить что страница прокручена до конца?
|
|||
---|---|---|---|
#18+
вадя voraa Ты не понимаешь. если следовать твоему - этот IntersectionObserver вообще надо исключить из стандарта, voraa всегда есть вероятность, что кто то написал или напишет потом IntersectionObserver - Полезная штука. Но его надо использовать по назначению. В консервваториях очень часто не так. Ты, наверно, молодой еще. А мне много раз приходилось что то менять в сайтах, написанных другими. Материл создателей по страшному. Уверен, что и меня материли временами те, кто потом дописывал, менял, сопровождал то, что породил я. Сам иногда лет через 5 правил свой код и материл себя же. Не бывает такого, что написал страницу, а потом сам всю жизнь ее сопровождаешь. Это не деградация до дураков - это жизнь. Вот вызывает тебя начальник и говорит: Вот есть старая страница - там в конце надо добавить то-то и то-то. Садишься и тупо добавляешь. Почему надо учитывать, что кто то какой то элемент там в конце поставил только для того, что бы ловить конец скроллинга? Элементы в HTML для того, что бы что то отображать, а не для каких то иных специальных целей. Есть четкое разделение. HTML - определяет структуру документа, CSS - его внешний вид, Javascript - взаимодействие с пользователем, динамику. Его и надо придерживаться и стараться не смешивать. Вот создали сайт - все работает. Страницы берутся с сервера, тексты из БД. Но есть там модальные окошки. В какой то момент хозяева сайта решили увеличить размер сообщений. Размер модальных окон тоже увеличился. Но это не повод, что из-за этого перестанет работать способ ловли конца скроллинга. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2020, 09:17 |
|
Как определить что страница прокручена до конца?
|
|||
---|---|---|---|
#18+
Очередной разговор слепого с глухим. И все потому, что в сотый раз детали задачи не раскрыты. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2020, 09:51 |
|
Как определить что страница прокручена до конца?
|
|||
---|---|---|---|
#18+
skyANA Очередной разговор слепого с глухим. И все потому, что в сотый раз детали задачи не раскрыты. Детали раскрыты полностью (См первый пост) Требуется определить именно конец прокрутки станицы, а не то, что дойдем до какого то искусственно созданного элемента. Потому, что с элементом (или другими элементами) может случиться что угодно, и он перестанет находиться в самом конце. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2020, 10:07 |
|
Как определить что страница прокручена до конца?
|
|||
---|---|---|---|
#18+
voraa skyANA Очередной разговор слепого с глухим. И все потому, что в сотый раз детали задачи не раскрыты. Детали раскрыты полностью (См первый пост) Требуется определить именно конец прокрутки станицы, а не то, что дойдем до какого то искусственно созданного элемента. Потому, что с элементом (или другими элементами) может случиться что угодно, и он перестанет находиться в самом конце. А можете ответить на вопрос: для чего требуется определить то, что страница прокручена до конца? В каком таком сценарии нужен именно универсальный скрипт? Например для отложенной загрузки, или подгрузки контента Intersection Observer - самое то: https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API The Intersection Observer API provides a way to asynchronously observe changes in the intersection of a target element with an ancestor element or with a top-level document's viewport. Intersection information is needed for many reasons, such as:
... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2020, 13:17 |
|
Как определить что страница прокручена до конца?
|
|||
---|---|---|---|
#18+
Дмитрий Мух, А если надо подгружать контент когда до конца скролла осталось <10%, но не более 600px? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2020, 16:53 |
|
Как определить что страница прокручена до конца?
|
|||
---|---|---|---|
#18+
hVostt Дмитрий Мух, А если надо подгружать контент когда до конца скролла осталось <10%, но не более 600px? :) Прям вот такие требования? Обычно есть требуемое поведение, дизайн и определённая структура страницы. Типа для ускорения первой загрузки мы отдаём вот только эту часть, окончание которой отмечено вот этим элементом. А остальное догружаем, если пользователь докрутил до него. Или у нас есть лента новостей, которую надо бесконечно подгружать, если пользователь докрутил до предпоследней новости. И под это поведение пишутся тесты. И если вдруг кто-то взял и перефигачил зачем-то структуру так, что функционал отвалился, то тесты это покажут. Но обычно это "вдруг кто-то" случается только в фантазиях разработчиков ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2020, 17:49 |
|
Как определить что страница прокручена до конца?
|
|||
---|---|---|---|
#18+
Дмитрий Мух Прям вот такие требования? Да, пример из настоящих требований. Загрузка контента должна быть предупреждающий, ещё до того, как юзер докрутит до конца страницы. Дмитрий Мух Типа для ускорения первой загрузки мы отдаём вот только эту часть, окончание которой отмечено вот этим элементом. А остальное догружаем, если пользователь докрутил до него. Ну вот он докрутил и сидит ждёт загрузки. Дмитрий Мух Или у нас есть лента новостей, которую надо бесконечно подгружать, если пользователь докрутил до предпоследней новости. В данном случае твоё решение подходит. Есть конкретный элемент, который является триггером. А если его нет? Можно конечно воткнуть какой-то див прозрачный, но это мусор, который никто в вёрстке не любит. Пример с той же лентой новостей, если юзер докрутил до последней новости, это ещё не показатель, что нужно подгружать следующие данные, так как текст новости может быть большой. Дмитрий Мух И под это поведение пишутся тесты. И если вдруг кто-то взял и перефигачил зачем-то структуру так, что функционал отвалился, то тесты это покажут. Так можно и оправдать говнокод. Тесты же есть Дмитрий Мух Но обычно это "вдруг кто-то" случается только в фантазиях разработчиков Случается всякое. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2020, 18:33 |
|
Как определить что страница прокручена до конца?
|
|||
---|---|---|---|
#18+
hVostt Да, пример из настоящих требований. Загрузка контента должна быть предупреждающий, ещё до того, как юзер докрутит до конца страницы. Хорошо. С Intersection Observer это сделать без проблем. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2020, 18:34 |
|
Как определить что страница прокручена до конца?
|
|||
---|---|---|---|
#18+
Дмитрий Мух hVostt Да, пример из настоящих требований. Загрузка контента должна быть предупреждающий, ещё до того, как юзер докрутит до конца страницы. Хорошо. С Intersection Observer это сделать без проблем. Я знаю что можно. Вешаем паразитный мусорный див и обсервим. Не понимаю, нахрена упали эти костыли, если можно трекать скролл? )) Это зачем оно нужно? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2020, 18:36 |
|
Как определить что страница прокручена до конца?
|
|||
---|---|---|---|
#18+
hVostt Дмитрий Мух Типа для ускорения первой загрузки мы отдаём вот только эту часть, окончание которой отмечено вот этим элементом. А остальное догружаем, если пользователь докрутил до него. Ну вот он докрутил и сидит ждёт загрузки. Докрутил до определённого места, отмеченного элементом. Ничем не отличается от твоих <10%. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2020, 18:36 |
|
Как определить что страница прокручена до конца?
|
|||
---|---|---|---|
#18+
Дмитрий Мух Докрутил до определённого места, отмеченного элементом. Ничем не отличается от твоих <10%. Да я не спорю, что можно. Но зачем настаивать на этом решении? Если триггером должен быть элемент -- ок. А если это именно скролл, зачем упарываться? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2020, 18:37 |
|
Как определить что страница прокручена до конца?
|
|||
---|---|---|---|
#18+
hVostt Не понимаю, нахрена упали эти костыли, если можно трекать скролл? )) Это зачем оно нужно? Документацию почитай: https://developer.mozilla.org/ru/docs/Web/API/Intersection_Observer_API ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2020, 18:37 |
|
Как определить что страница прокручена до конца?
|
|||
---|---|---|---|
#18+
Дмитрий Мух hVostt Не понимаю, нахрена упали эти костыли, если можно трекать скролл? )) Это зачем оно нужно? Документацию почитай: https://developer.mozilla.org/ru/docs/Web/API/Intersection_Observer_API Где там поддержка моего условия? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2020, 18:40 |
|
Как определить что страница прокручена до конца?
|
|||
---|---|---|---|
#18+
Дмитрий Мух, Покажи threshold < 10% && >= 600px ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2020, 18:41 |
|
Как определить что страница прокручена до конца?
|
|||
---|---|---|---|
#18+
hVostt Дмитрий Мух, Покажи threshold < 10% && >= 600px А скажи, что даёт твоё условие и мы попробуем тоже самое сделать через: Настройки root Элемент который используется в качестве области просмотра для проверки видимости целевого элемента. Должен быть предком целевого элемента. По умолчанию используется область видимости браузера если не определён или имеет значение null. rootMargin Отступы вокруг root. Могут иметь значения как свойство css margin: "10px 20px 30px 40px" (top, right, bottom, left). Значения можно задавать в процентах. По умолчанию все параметры установлены в нули. threshold Число или массив чисел, указывающий, при каком проценте видимости целевого элемента должен сработать callback. Например, в этом случае callback функция будет вызываться при появлении в зоне видимости каждый 25% целевого элемента: [0, 0.25, 0.5, 0.75, 1] ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2020, 18:48 |
|
Как определить что страница прокручена до конца?
|
|||
---|---|---|---|
#18+
Пример от World Wide Web Consortium: https://github.com/w3c/IntersectionObserver/blob/master/explainer.md#delay-loading ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2020, 18:51 |
|
Как определить что страница прокручена до конца?
|
|||
---|---|---|---|
#18+
Дмитрий Мух А скажи, что даёт твоё условие и мы попробуем тоже самое сделать через: Настройки root Элемент который используется в качестве области просмотра для проверки видимости целевого элемента. Должен быть предком целевого элемента. По умолчанию используется область видимости браузера если не определён или имеет значение null. rootMargin Отступы вокруг root. Могут иметь значения как свойство css margin: "10px 20px 30px 40px" (top, right, bottom, left). Значения можно задавать в процентах. По умолчанию все параметры установлены в нули. threshold Число или массив чисел, указывающий, при каком проценте видимости целевого элемента должен сработать callback. Например, в этом случае callback функция будет вызываться при появлении в зоне видимости каждый 25% целевого элемента: [0, 0.25, 0.5, 0.75, 1] Да я блин знаю, как через это реализовать задуманное. Вопрос, зачем? Задача очевидно решается на скролле. У ТС задача -- узнать, когда пользователь доскролли до конца страницы. Может он хочет в этот момент показывать окошечко с фоткой феерверков. А обсервер мы тоже юзаем там, где это уместно. И даже для подгрузки контента, там где это уместно, где реально есть элемент, являющийся триггером. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2020, 19:09 |
|
Как определить что страница прокручена до конца?
|
|||
---|---|---|---|
#18+
hVostt У ТС задача -- узнать, когда пользователь доскролли до конца страницы. Может он хочет в этот момент показывать окошечко с фоткой феерверков. Я же изначально ТС-у написал: Дмитрий Мух Уж не для реализации "бесконечного скролла", где контент подгружается по мере того как страница прокручивается вниз, вам это нужно? Если да, то Intersection Observer - самое то. Весь этот флейм в очередной раз из-за того, что мы не знаем деталей задачи. Вот уже допускаем, что а вдруг "он хочет в этот момент показывать окошечко с фоткой феерверков" ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2020, 19:22 |
|
Как определить что страница прокручена до конца?
|
|||
---|---|---|---|
#18+
Дмитрий Мух, Нет уж друг, очевидно, ты прям хочешь впарить этот Intersection Observer )) по поводу и без повода про динамическую загрузку контента тоже речи не шло ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2020, 19:24 |
|
Как определить что страница прокручена до конца?
|
|||
---|---|---|---|
#18+
hVostt А обсервер мы тоже юзаем там, где это уместно. И даже для подгрузки контента, там где это уместно, где реально есть элемент, являющийся триггером. В примере выше контейнер, куда грузится контент и является триггером. Как бы логично отследить что в место, где должен быть контент, последний загружается. И никакого мусора. Вообщем пора заканчивать. Думайте сами, решайте сами... ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2020, 19:27 |
|
Как определить что страница прокручена до конца?
|
|||
---|---|---|---|
#18+
hVostt Дмитрий Мух, Нет уж друг, очевидно, ты прям хочешь впарить этот Intersection Observer )) по поводу и без повода про динамическую загрузку контента тоже речи не шло Дмитрий Мух Intersection information is needed for many reasons, such as:
И считаю, что именно для них Intersection Observer - самое то. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2020, 19:29 |
|
|
start [/forum/topic.php?fid=22&msg=39993222&tid=1443403]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
156ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
68ms |
get tp. blocked users: |
1ms |
others: | 15ms |
total: | 280ms |
0 / 0 |