Задать вопрос
@ArtemZA
Студент

Как с помощью одного JS скрипта получить данные созданные другим JS скриптом?

Доброго времени суток.
Смотрю периодически сайт hh.ru
И каждый раз мне приходится ставить галочки для нужных городов.
Я решил облегчить себе задачу с помощью tamper monkey, что бы при заходе на страницу города проставлялись автоматически.

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

Я пытаюсь получить его элементы но ни data.querySelector, ни попытка обращения по индексу его детей(child) у меня не получилась.
data.querySelector у меня не находит класс, а при обращении по индексу детей выводит пустой класс без каких либо данных, хотя когда обращаешься без какого либо индекса, просто data.children, вывод в консоли показывает множество потомков.

spoiler
// @match        https://hh.ru/search/vacancy

(function() {
    'use strict';

     var getUpDiv = function() {
     var contents = document.querySelectorAll(
        ".novafilters_search-preference"

         );
        console.log("Content: ", contents);
        return contents[0].children;
    }

    var ClickItem = function(data){
        var metadata = data.querySelector(
            '.bloko-link-switch'
            );

        if(metadata.textContent == "Показать все"){
            //console.log(metadata.textContent);
            metadata.click();
            return metadata ? metadata.children[1] : null;
        }
        else{
            console.log("Надо показать");
            return null;

        }
            }

    var getCities = function(data){
        console.log(typeof(data));
        console.log("Cities ", data);
        console.log(data.children);
        var coll = data.children;
        console.log("Колекция " ,coll.namedItem(0));

        for (let newd in coll) {
            console.log(coll[newd])
        };


/*         for (let newd in data) {
            console.log(newd);
        } */
/*         var cities = data.querySelector(
           '.novafilters-list novafilters-list_scrolling'
           );         */
        console.log(data.lenght);
        for(var z =0 ; z < data.length; z++)
        {
            console.log(data[z]);
        }
/*        console.log("Cities 2 " , cities); */
    }
    var run = function(){
        var UpDiv = getUpDiv ();
        for (var i=0; i < UpDiv.length; i++) {
            if (i == 3){
                var UpDiv2 = UpDiv[i];
                console.log("Video^ ", UpDiv2);
                ClickItem(UpDiv2);

            }

        }


        UpDiv = getUpDiv ();
        for ( i=0; i < UpDiv.length; i++) {
            if (i == 3){
                UpDiv2 = UpDiv[i];
                console.log("Video^ ",UpDiv2);


            }

        }

        console.log("za predelom^ ", UpDiv2.children[1]);
        var git = UpDiv2.children[1];
        console.log("za predelo 2 ",git.children[0]);
        getCities(UpDiv2.children[1]);

        //console.log("za predelom^ ", video);
        
    }
  
    setTimeout(run, 3000);

    // Your code here...
})();


Подскажите пожалуйста как можно решить эту проблему? Или куда мне смотреть?

Спасибо.
  • Вопрос задан
  • 91 просмотр
Подписаться 1 Простой 5 комментариев
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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