Прокрутка



  • Здравствуйте, на странице во ВК БАС показывает одно количество элементов (ссылок групп), по мере прокрутки страницы вниз количество постоянно увеличивается. Как сделать что-бы ползунок прокрутки передвинулся максимально вниз?



  • @denanotherday
    В вк это может длится очень долго.
    Но вот пример

    1. Загружаем страницу с лентой новостей.
    2. Получаем высоту страницы с помощью экшена Выполнить яваскрипт (Какой код выполнить гуглим по запросу высота страницы js, координаты страницы js), в переменную (например 1)
    3. Начинаем вечный цикл while с условием true, в нем ввод текста - нажатие кнопки page down с ожиданием полной загрузки, по том опять получение высоты страницы, но уже в другую переменную(например 2)
    4. В конце цикла условие если перменная 1 равна переменной 2 - то действие break, иначе присваиваем переменной 1 значение переменной 2


  • Советую прогрузить страницу с группами в BAS. Отключить инет, тогда у вас будет возможность уловить самый нижний элемент страницы. Потом просто прокручивайте к нему.



  • Спасибо.



  • @olegtut буду знать на будущее.



  • @DrPrime

    "Получаем высоту страницы с помощью экшена Выполнить яваскрипт (Какой код выполнить гуглим по запросу высота страницы js, координаты страницы js), в переменную (например 1)"

    -Насколько понял, можно так это сделать:
    Math.max($(document).height(), $(window).height())

    Но мне не удалось получить значение высоты. Почему-то пустое значение. Я еще слаб в js, тем более в его использовании в BAS.

    alt text

    Понимаю, что где-то делаю глупость. Но не знаю где(( Из-за отсутствия опыта работы с js.



  • @IvanM said in Прокрутка:

    $

    $(document) это код, который будет работать, только если на странице этого сайта подключен фреймворк jquery.

    Вот учебник совсем для новичков https://learn.javascript.ru/



  • Благодарю за подсказку.

    Еще вот пишут что такое сработает:
    var body = document.body, html = document.documentElement;
    var height = Math.max( body.scrollHeight, body.offsetHeight, html.clientHeight, html.scrollHeight, html.offsetHeight );

    ... то есть максимальное число значения Height у пяти элементов вычислить нужно. Причем значения эти находятся в разных "документах".

    Это получается нужно:

    1. сохранить в 2 переменные js код body и html (применять экшон "яваскрипт")
    2. спарсить величины из документов в переменные
    3. найти максимальную из величин

    Инструментов BAS вроде должно хватить для этого... надеюсь



  • Я не понимаю как в басе должно выглядеть получение величины например document.documentElement.scrollHeight

    Как должно выглядеть выражение для переменной?
    Ведь в содержимом страницы ее нет. Это как бы величина в браузере.



  • @IvanM said in Прокрутка:

    Я не понимаю как в басе должно выглядеть получение величины например document.documentElement.scrollHeight

    Как должно выглядеть выражение для переменной?
    Ведь в содержимом страницы ее нет. Это как бы величина в браузере.

    Действие "яваскрипт"
    dca0fc55-eba4-47bf-92f9-5bae0c5df79f-изображение.png
    с кодом:

    window.innerHeight + window.pageYOffset >= Math.max(   document.body.scrollHeight, document.documentElement.scrollHeight,   document.body.offsetHeight, document.documentElement.offsetHeight,   document.body.clientHeight, document.documentElement.clientHeight );
    

    Если действие вернёт true, значит окно браузера находится внизу страницы



  • @Fox said in Прокрутка:

    window.innerHeight + window.pageYOffset

    Ого, спасибо. Нигде такое не мог найти.
    Вчера, что бы хоть как-то работало, сделал так:
    Проверял наличие на сайтов элемента подвала, по наиболее распространенным селекторам (>CSS> footer, >CSS> .footer и т.д.). Ну и получал их координаты. В целом - идиотизм конечно. И не на каждом сайте такое сработает.
    😅



  • @Fox В чем может быть проблема, если находится бот на первом экране, а действие, которое Вы скинули все равно отдает True?



  • @kremenseo said in Прокрутка:

    @Fox В чем может быть проблема, если находится бот на первом экране, а действие, которое Вы скинули все равно отдает True?

    На первом экране? Чегось?



  • @Fox имею ввиду, что бот еще не прокручивал страницу и находится в самом её верху

    window.innerHeight + window.pageYOffset >= Math.max(   document.body.scrollHeight, document.documentElement.scrollHeight,   document.body.offsetHeight, document.documentElement.offsetHeight,   document.body.clientHeight, document.documentElement.clientHeight );
    
    

    а вот этот код возвращает True



  • @kremenseo said in Прокрутка:

    @Fox имею ввиду, что бот еще не прокручивал страницу и находится в самом её верху

    window.innerHeight + window.pageYOffset >= Math.max(   document.body.scrollHeight, document.documentElement.scrollHeight,   document.body.offsetHeight, document.documentElement.offsetHeight,   document.body.clientHeight, document.documentElement.clientHeight );
    
    

    а вот этот код возвращает True

    Этот код возвращает true если размер прокрутки + высота экрана >= высоты страницы. То есть если на странице нету прокрутки он тоже вернёт true



  • @Fox А как быть со страницей, к примеру https://translate.google.com/translate?hl=ru&sl=ru&tl=en&u=https%3A%2F%2Fade.in.ua%2Fdelaem-dengi-na-azhiotazhe-vokrug-bitkoina%2F

    мне нужно чтобы он её прокручивал и переводил постепенно, конкретно для этого сайта, не пойму за что зацепиться, чтобы сделать через while



  • @kremenseo said in Прокрутка:

    @Fox А как быть со страницей, к примеру https://translate.google.com/translate?hl=ru&sl=ru&tl=en&u=https%3A%2F%2Fade.in.ua%2Fdelaem-dengi-na-azhiotazhe-vokrug-bitkoina%2F

    мне нужно чтобы он её прокручивал и переводил постепенно, конкретно для этого сайта, не пойму за что зацепиться, чтобы сделать через while

    Страница с переводм находится во фрейме, обращайтесь к нему через действие "Выполнить Javascript На Элементе"


Log in to reply
 

  • 2
  • 9
  • 2
  • 13
  • 3
  • 1
  • 1
  • 3