• Нашёл вредоносный код, как его расшифровать?

    @vshvydky
    alert или console.log уже не работают?
    короче там есть функция, которая создает новый скрипт и дальше видимо его подгружает на страницу, ну а дальше не трудно предположить что происходит.
    Ответ написан
  • Почему не верный размер массива?

    @vshvydky
    По теме 1.
    Замени push на равно. Объяснить не могу, но это сработает. Не думаю, что тебе на 1 обработчик потребуется несколько функций. Возможно балуется сборщик мусора, так как в отладке функцию в массив складывает.
    this.events[event] = callback
    По теме 2.
    Можно позаимсововать код EventEmmiter для node.js
    Про велосипедность, да пахнет велосипедом. На мой взгляд избыточным смотрится наследование с передачей опций вникуда, а еще отдельный метод для регистрации события. Этот функционал должен быть включен в on. Так же неплохо иметь методы просмотра списка событий и удаление.
    А еще не совсем понимаю, как ты передашь в функцию параметры, которая попала в on. Посмотри в ноде доки, там параметры передаются после функции как аргументы.
    Апдейт, нарисовал чуток кода. Возможно это вам нужно.
    class Emitter {
        constructor() {
            this.events = {};
        }
    
        on(event, cb) {
            console.log('[ON]Проверяем есть ли массив функций: ' + (this.events[event] instanceof Array));
            if (!(this.events[event] instanceof Array)) {
                console.log('[ON]Создаем массив для ' + event);
                this.events[event] = [];
            }
            this.events[event].push(cb);
            console.log('[ON]В событие: ' + event + ' добавлена функция: ' + cb);
        }
    
        emit(event, arg) {
            try {
                if (!this.events.hasOwnProperty(event))
                    throw Error('Попытка вызвать незарегистрированное событие');
                console.log('[EMIT]Проверяем в эмите ' + (this.events[event] instanceof Array));
                this.events[event].forEach(function (item) {
                    console.log('[EMIT]Выполняем событие: ' + item + ' для аргумента: ' + arg);
                    item(arg);
                });
            } catch (e) {
                console.log('Отловили ошибку: ' + e.message);
            }
        }
    }
    let fu1 = function (arg) {
        console.log('[FUNCTION]Выполняется первая функция из эмиттера, значение аргумента ' + arg);
    };
    let fu2 = function (arg) {
        console.log('[FUNCTION]Выполняется вторая функция из эмиттера, значение аргумента ' + arg);
    };
    let obj1 = new Emitter();
    obj1.on('run', fu1);
    obj1.on('run', fu2);
    obj1.emit('run', 'hellooooo!!!');
    obj1.emit('run', 'hef3efgw2llooooo!!!');
    obj1.emit('rune', 'hef3efgw2llooooo!!!');

    Результат исполнения:
    [ON]Проверяем есть ли массив функций: false
    [ON]Создаем массив для run
    [ON]В событие: run добавлена функция: function (arg) {
        console.log('[FUNCTION]Выполняется первая функция из эмиттера, значение аргумента ' + arg);
    }
    [ON]Проверяем есть ли массив функций: true
    [ON]В событие: run добавлена функция: function (arg) {
        console.log('[FUNCTION]Выполняется вторая функция из эмиттера, значение аргумента ' + arg);
    }
    [EMIT]Проверяем в эмите true
    [EMIT]Выполняем событие: function (arg) {
        console.log('[FUNCTION]Выполняется первая функция из эмиттера, значение аргумента ' + arg);
    } для аргумента: hellooooo!!!
    [FUNCTION]Выполняется первая функция из эмиттера, значение аргумента hellooooo!!!
    [EMIT]Выполняем событие: function (arg) {
        console.log('[FUNCTION]Выполняется вторая функция из эмиттера, значение аргумента ' + arg);
    } для аргумента: hellooooo!!!
    [FUNCTION]Выполняется вторая функция из эмиттера, значение аргумента hellooooo!!!
    [EMIT]Проверяем в эмите true
    [EMIT]Выполняем событие: function (arg) {
        console.log('[FUNCTION]Выполняется первая функция из эмиттера, значение аргумента ' + arg);
    } для аргумента: hef3efgw2llooooo!!!
    [FUNCTION]Выполняется первая функция из эмиттера, значение аргумента hef3efgw2llooooo!!!
    [EMIT]Выполняем событие: function (arg) {
        console.log('[FUNCTION]Выполняется вторая функция из эмиттера, значение аргумента ' + arg);
    } для аргумента: hef3efgw2llooooo!!!
    [FUNCTION]Выполняется вторая функция из эмиттера, значение аргумента hef3efgw2llooooo!!!
    Отловили ошибку: Попытка вызвать незарегистрированное событие
    Ответ написан
  • Как добавлять комментарии в Instagram без api?

    @vshvydky
    я за nightmare.js
    Если что, есть еще для js:
    goose parser (точное название не помню. но нагуглить легко)
    На руби есть Watir
    На питоне scrapy
    Ответ написан
    Комментировать
  • Возможно ли задать POST и GET запросы, без доступа к серверу?

    @vshvydky
    Если вы делаете пост или гет на свой сервер, то можно разрешить себе это делать. к "Access-Control-Allow-Origin" установить *
    Ответ написан
    Комментировать
  • Как взять title из iframe и передать его странице, в которой он загружается?

    @vshvydky
    Если ифрейм с чужой страницы, то никак, безопасность браузера
    Ответ написан
  • Функция вызывает сама себя и через несколько тактов "падает", что можно с этим сделать?

    @vshvydky
    переменные в функции живут до окончания ее исполнения, то есть все переменные каждой функции родителя будут живы до тех пор, пока вы не закончите исполнение самой глубокой функции и не начнете подыматься наверх и дропать все данные. Я бы , если конечно очень требуется рекурсия, делал следующее, код будет немного абстрактный.
    function func($array) {
      if ($какое_то_условие для выхода) {
        //какой нибудь код
      } else {
    создаем объекты, проводим манипуляции, типо
    $aaa = new SuperPuperClass();
    $bbb=$aaa->getBigData;
    далее грохаем $aaa , $bbb пушим в наш массив данных и тоже грохаем, далее передаем массив дальше в функцию
        func(array);	 // запускаем функцию опять
      }
    }

    Однако, надо понимать, что в памяти будет висеть такое зло функция ([1]) -> функция ([1,2]) .... -> функция([1,2....,N])
    Чуть облегчить себе жизнь можно вынеся массив на уровень объявления функции, пусть он будет для нее глобальным. Тогда пушить или попать из него будет можно откуда угодно и он не будет дублироваться. А вообще, если есть возможность отработать через фор, лучше не делать рекурсию.
    Ответ написан
    6 комментариев
  • Как добавить товар в базу MySQL?

    @vshvydky
    phpfaq.ru/safemysql классная штука, а ваш код лично мне кажется нечитаемым. А про результирующий SQL запрос я вообще молчу, я его просто неееее виииииижуууууу, и думаю большинство нормлаьных людей меня поддержат.
    UP:
    Для вашего случая уже придумано решение в классе:
    - ?a ("array") - набор значений для IN (строка вида 'a','b','c')
    Ответ написан
  • Как положить данные ajax в переменную?

    @vshvydky
    function ax(url, callback) {
        var xhr = new XMLHttpRequest();
        xhr.open('GET', url);
        xhr.onreadystatechange = function(){
            if (this.readyState == 4) {
                if (this.status == 200)
                    callback(this.responseText);
                // иначе сетевая ошибка
            }
        };
        xhr.send(null);
    }
    
    function getUrl() {
        var gUrl = 'http://localhost';
        ax(gUrl, function (data) {
            console.log(data);
        });
    }

    У вас функция function (data) выполняется хз где и когда, а точнее , когда уже уничтожен экземпляр функции ДайУрл.... Если не хочется особо вникать ни во что, достаточно той переписки, что я скинул. Если хотите данные писать куда-то в переменную, объявите ее на уровень выше своей функции ДайУрл и пушите туда что надо. А вообще совет, почитайте учебник learn.javascript.ru . Кстати на промисах это будет действительно изящнее. Как это сделать поймете прочитав книгу.
    Ответ написан
    Комментировать
  • Как получить length активного элемента?

    @vshvydky
    Думаю ответ скрыт здесь
    Ответ написан
    Комментировать
  • Как получить бессрочный токен на javascript для vk api?

    @vshvydky
    а разве ВК четко не обозначает, что действие токена ограничено временными рамками?
    3. Получение access_token
    После успешной авторизации приложения браузер пользователя будет перенаправлен по адресу redirect_uri, указанному при открытии диалога авторизации. При этом ключ доступа к API access_token и другие параметры будут переданы в URL-фрагменте ссылки:

    http://REDIRECT_URI#access_token= 533bacf01e11f55b536a565b57531ad114461ae8736d6506a3&expires_in=86400&user_id=8492&state=123456

    Вместе с ключом access_token также будет указано время его жизни expires_in, заданное в секундах. Если срок использования ключа истек, то необходимо повторно провести все описанные выше шаги, но в этом случае пользователю уже не придется дважды разрешать доступ. Запрашивать access_token также необходимо при смене пользователем логина или пароля или удалением приложения в настройках доступа.

    Кроме того, среди возвращаемых параметров будет указан user_id — идентификатор авторизовавшегося пользователя.

    В случае возникновения ошибки авторизации в качестве GET-параметров в redirect_uri будет передана информация об этой ошибке.
    Ответ написан
    Комментировать
  • Что использовать для администрирования MySQL?

    @vshvydky
    Dbforge studio
    Ответ написан
    Комментировать
  • Каким образом появляется это окно?

    @vshvydky
    Например как здесь getbootstrap.com/javascript
    Читать про modal
    Ответ написан
    Комментировать
  • Клонирование элементов по клику?

    @vshvydky
    написать обработчик события на клик по диву
    где через querySelector получить всю эту ноду, далее удалить ее там где вы ее получили и добавить туда, куда вам ее надо добавить. собственно все. Как добавлять и удалять читать отсюда
    Ответ написан
    Комментировать
  • Как нанять программиста из России на короткий срок (до месяца) для удаленной работы в стране Евросоюза?

    @vshvydky
    наймите его через upwork и не заморачивайтесь
    Ответ написан
    Комментировать
  • Всё верно написан но функция не вызывается в js?

    @vshvydky
    document.forms["myForm"]["options"].value; проверь на работоспособность и переделай через querySelectorAll
    Ответ написан
    Комментировать
  • Почему пишет, что это не является функцией?

    @vshvydky
    А вас вообще код не смущает? Вы написали мягко говоря какую-то ерунду.
    Если хотите создать объект, первым делом не методы объявляйте, а объект....
    Ответ написан