Ответы пользователя по тегу JavaScript
  • Как через браузер отследить активность пользователя?

    @rPman
    Chrome Remote Desktop - расширение к браузеру, которое позволяет получить доступ к машине пользователя вне браузера, т.е. какой то api на это имеется, изучите его или код расширения, хотя бы сможете реализовать задуманное в виде плагина.

    Для firefox или safari стандарта на это вроде бы нет.

    p.s. но зачем так извращаться?
    Ответ написан
    2 комментария
  • Аналоги js в web?

    @rPman
    sun/oracle, adobe и позднее microsoft уже попытались втиснуть соответственно java applet, shockwave flash и silverlight, во что это вылилось посмотрите, до сих пор страдаем от остатков тормозного и гглавное дырявого флеша

    Позднее, кажется в google, предложили способ компиляции в нативный код NaCl и PNaCl (кажется на базе llvm) но все заглохло

    Сейчас весь мир смотрит на webassembly на базе ускоренного javascript. Взлетит - будем писать на любом языке програмирования, который будем компилировать еще на этапе разворачивания приложения, а исполняться оно будет уже в браузере,... все равно это будет виртуальная машина, правда технологии сейчас на столько крутые, что даже виртуальная машина работает на скорости сравнимой с нативным кодом (10%-30% потерь) и львиные потери производительности обычно не из-за кода а из-за кучи прослоек до периферии. Один HTML DOM чего стоит.
    Ответ написан
    Комментировать
  • Как в js отловить такой перенос текста?

    @rPman
    Ответ написан
    Комментировать
  • Как отследить закрытие PWA?

    @rPman
    Отследить прибитие приложения можно отдельным сервисом, работающим в фоне (внимание - батарейка), оно же может сообщить отдельным подключением об этом факте (простым http get запросом).
    Ответ написан
    Комментировать
  • Как можно выполнить отладку большого js скрипта без точек останова (PHPStorm)?

    @rPman
    Безотносительно того, какой язык или платформа используется, есть классический способ отладки приложений - логирование событий и данных.

    Т.е. вы должны покрыть свой код выводом отладочной информацией, в который как минимум должны включить вызовы методов и часть информации о передаваемых параметрах. Полноту и формат логируемой информации и место размещения выбирайте от того, как именно все это будете использовать, например одно время я использовал текстовый формат с машиночитаемым форматом хранения информации (каждая строка - json, определенный формат для указания времени, содержимого стека вызовов методов, аргументов и выделенных переменных) и для анализа логов писал небольшое приложение (в большинстве случаев достаточно взгляда на лог просто выводом в консоль и утилит tail и grep).

    На самом деле не обязательно покрывать отладочной информацией ВЕСЬ проект, это слишком раздувает файл логов, затрудняя его анализ и замедляя работу приложения. Обычно вы знаете, в каком месте кода у вас проблема, и именно эту часть покрываете отладочной информацией.

    Делайте общее место размещения лога, если у вас отладка многопользовательского приложения, само собой вы должны включать в лог идентификатор клиента, это сильно поможет разрешать ситуации по монопольному доступу к данным, например.

    p.s. свой колбек на вызов функции в javascript можно зарегистрировать так:
    (function() {
        var call = Function.prototype.call;
        Function.prototype.call = function() {
            console.log(this, arguments);
            return call.apply(this, arguments);
        };
    }());
    Ответ написан
  • Как повысить приоритет браузерного расширения по сравнению с другими расширениями?

    @rPman
    Проведя несколько простых экспериментов, попробуйте определить, как именно браузер сортирует расширения. Это может быть порядок установки, по дате обновления или имени, или идентификатору или еще по какому признаку. Выяснив это вы легко сможете создать расширение, которое с большой вероятностью будет первым (а в вашем контролируемом окружении - с гарантией).
    Ответ написан
    Комментировать
  • Как запретить отправку определенных emails?

    @rPman
    Вы уверены что такая 'защита' вас устроит? ведь это выглядит как табличка - уважаемые спамеры, пожалуйста не спамьте мне тут.

    Спамер посмотрит, какой запрос отправляет форма, и минуя ваши javascript проверки отправит свой спам.

    Валидация должна быть на серверной стороне.
    Ответ написан
  • Атака из "режима разработчика". Как защититься?

    @rPman
    Только перенос 'опасной' деятельности на сервер вас спасет.

    Правильный подход к веб-разработке - на javascript исполняется только интерфейс и все что с этим связано, а вся логика должна быть на сервере.
    Ответ написан
    Комментировать
  • Побитовая маска для значения 0...4 для каждого разряда?

    @rPman
    Если вам так уж прямо надо хранить в структуре (т.е. эффективно без затрат) значения меньше байта, используйте побитовые поля в структурах, причем компилятор автоматически будет рапределять биты по словам (точнее указанным типам) значения

    https://en.cppreference.com/w/cpp/language/bit_field
    Ответ написан
    2 комментария
  • Как уменьшить вес JS файла?

    @rPman
    Удалить из js компоненты и функции которые не используются.
    Разработчик, выбравший использование этого файла, должен знать что для этого нужно сделать.

    p.s. я не верю что у вас 900кб все используются, это очень маловероятно
    Ответ написан
    Комментировать
  • Можно ли отключать часть js кода на чужой html странице?

    @rPman
    в консоли пишите что то типа body.innerHTML и плучаете в виде строки всю сгенерированную страницу
    Ответ написан
    Комментировать
  • Печать документов в браузере Chrome без Google Cloud Print?

    @rPman
    Объясните, о чем идет речь? Что такое WinPrint?

    Чтобы открыть стандартную форму печати странице в браузере, необходимо просто вызвать print(), никаких облачных принтеров, штатная форма хрома, на выбор печать в локальный pdf и выбор списка локальных принтеров операционной системы, то же самое выводится при нажатии ctrl+p

    p.s. без диалога

    ну и еще, никакими способами, из javascript на странице вы не сможете получить доступ к реальным принтерам, вам нужна прослойка в виде плагина или расширения, это вопрос безопасности, иначе злоумышленники так смогут ддосить организации, выводя на их принтеры всякий мусор
    Ответ написан
    Комментировать
  • Как генерировать числа с линейно заданной вероятностью?

    @rPman
    Если параметры задают вероятность дискретно (на картинке кстати у вас не дискретно а сложные нелинейные зависимости, т.е. 1 встречается почти в 50 раз реже 10, смею предположить что вам ТАК не надо) на интервалах, типа от [0-10) - 50 то решайте проблему в лоб, сначала выбирайте интервал в соответствии с вероятностями (если задаете количественно, то это сумма заданых значений - максимальное значение, а интервал значения rand - соответствующее значение для суммы до этого интервала и с ним, после выбора интервала просто делаете повторный rand так как в пределах интервала вам нужно равномерное.
    Ответ написан
  • Как правильно вырезать данные html из переменной?

    @rPman
    apiReplay= $('#song'+id).text();
    Ответ написан
    Комментировать
  • Визуальное программирование на js. Куда копать?

    @rPman
    Готовое, например https://github.com/google/blockly

    Главная проблема по разработке визуального редактора программ - это осознание что это нафиг никому не нужно, после первого вау эффекта приходит понимание что организация низкоуровневой логики в блоках - не то что нужно.

    p.s. в вашем случае 99% работы - интерфейс пользователя. Хранить можно уже готовый код, на клиенте парсить заново, визуальные параметры (положение блоков на экране) хранить рядом в коментариях
    Ответ написан
    4 комментария
  • Как скачать с этого сайта файл https://abc.vvsu.ru/book/2145181393/index.shtml?

    @rPman
    Никуда оно не ссылается, Том 2.pdf - это имя файла из которого было получено содержимое этой страницы.
    Страницы - набор картинок
    скрипт там примитивный, на scroldown делает запрос
    https://abc.vvsu.ru/book/2145181393/file3
    где 3 - номер страницы
    возвращает html текст

    вы можете запрашивать их чем угодно и объединять простой конкатенацией, полученный документ html так же необходимо догрузить (там в основном картинки) либо программно либо натравить на него curl с ключом -p
    Ответ написан
    Комментировать
  • Как реализовать вывод результата расчета из фрейма?

    @rPman
    Если вы говорите про немодифицированные браузеры без плагинов то доступ к данным iframe возможен только в пределах того же домена (отдельный вопрос про поддомены, скорее всего можно) с единым типом подключения (http/https). Если это так то простой скрипт
    window.frames['myIFrame'].document.getElementById('myIFrameElemId')
    позволит анализировать элементы во фрейме (например по таймеру) и даже взаимодействовать с ними (например симулировать клики и заполнять поля значениями).

    Иначе это запрещено политиками браузеров (иначе это был бы ад с вопросами безопасности, ведь можно было бы открыть ваш вконтактик/банковский сайт во фрейме и делать там что хочешь).

    Из браузерного расширения/плагина (советую плагины уровня greasemonkey) или используя свой браузер (на базе браузерных контролов или вебкит движков, это просто, обычно код браузера без поддержки загрузки и интерфейса занимает десяток строк вы можете получать доступ к любым iframe) все это можно делать без ограничений.

    p.s. а подключить скрипт не во фрейме а на своей странице не получится?
    Ответ написан
    1 комментарий
  • Как обойти JS скрипт, мешающий спарсить страницу?

    @rPman
    Смиритесь, пол интернета уже javascript based.

    Загружать страницы headless браузерами, компоненты браузера есть по до все известные языки програмирования и платформы, основанные либо на webkit (например у java webengine) либо на основе firefox (mono webbrowser) либо iexplore (.net - webbrowser).
    p.s. php - https://github.com/chrome-php/headless-chromium-php

    Страницу получать либо прямо из языка програмирования, запрашивая webengine.document.innerHTML или делать скрин картинки, либо инжектить javascript на страницу и работать с ней как вам заблагорассудится, в т.ч. эмулировать нажатие кнопок и вообще пользователя.
    Ответ написан
    3 комментария
  • Как правильно спарсить HTML, получив размеры элементов?

    @rPman
    рекурсивно пробегаете по всем элементам на странице (начиная с document, первый потомок node.firstChild перебираете nextSibiling), положение ноды на экране берете getBoundingClientRect() и если width или height равны нулю то это невидимый объект на экране.

    Пример, вот этот модуль инжектится на страницу, перебирает все объекты и оценивает их видимость и даже отслеживает изменения по таймеру (идеологически неправильно, логичнее на хендлеры повесить колбек и отслеживать их), работает даже на слабых машинах с огромными страницами приемлемое время (сотни миллисекунд на десяток тысяч нод).
    Ответ написан
    Комментировать