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

    @rPman
    Я так понимаю хотите чтобы с пользовательской стороны шли подключения да еще и через прокси, это что за изощренный метод сокрытия деятельности?

    Теоретически это возможно, так как http прокси это вебсервер к которому нужно делать запрос с указанием нужного адреса в заголовках, копайте в сторону XHTTPRequest
    Ответ написан
  • Сущетсвует ли способ получения информации с веб страницы в автоматическом режиме с помощью JS без хака?

    @rPman
    Да, если у вас нет возможности установить на пользовательские машины ваше приложение (или к примеру плагин в браузер) то у вас только один путь - написать веб приложение и попросить заходить на него пользователям.

    Тупой пример - открывайте вебсайт в iframe и обновляйте по таймеру. Чуть более правильно - вы должны найти запрос на сервер, с помощью которого вы сможете определить, изменились ли данные или нет, и на своем веб-сервере в бакэнде выполняйте его в цикле с интервалом, как только данные изменились - отправляйте по вебсокет требование обновить страницу (iframe) у пользователей.

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

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

    @rPman
    С точки зрения программирования - никаких проблем, кроме только что мизерного оверхеда на процессор, работа со строками немного медленней чем с числами или прямыми ссылками на методы (например передавать объект, у которого вызываете виртуальный наследуемый метод translate).

    С точки зрения итогового результата - плохо, теряется контекст перевода.

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

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

    @rPman
    да
    Ответ написан
    Комментировать
  • Как фильтровать по параметрам в datatables с базой в 200к записей?

    @rPman
    кто то должен рулить фильтрацией данных, совершенно неприемлимо, если вы это будете делать на клиентской стороне, а значит этим должен заниматься бакэнд, скорее всего там у вас sql-база данных, а значит можете смело делать запросы вида select * from zzz where yyy=xxx limit 30 offset page*30

    p.s. если данные в таких случаях заметно нагружают базу данных, то можно создавать временную таблицу, в которую загружаете id отфильтрованных записей, а уже из нее получаете текущее окно (2 колонки id и num)
    Ответ написан
    Комментировать
  • Как отслеживать все AJAX запросы посланные из IFRAME / перехват AJAX запросов?

    @rPman
    плагином в браузере, каким-нибудь tempermonkey инжектите свой скрипт в чужой сайт, зменяете их метод ajax или чем они шлют и смотрите
    Ответ написан
  • Websocket как изменить входящее сообщение?

    @rPman
    попробуйте подменить метод на свой, что то типа такого:
    https://stackoverflow.com/questions/40341197/how-t...
    WebSocket.prototype.oldSend = WebSocket.prototype.send;
    
    WebSocket.prototype.send = function(data) {
         console.log("ws: sending data");
         WebSocket.prototype.oldSend.apply(this, [data]);
    };
    Ответ написан
  • Постоянное обновление в реальном времени куска кода, полученного по XMLHttpRequest?

    @rPman
    если у вас 1 клиент, то setInterval - нормально, иначе нагрузка на сервер квадрат от количества пользователей

    Правильно
    - использовать (устаревший способ) - http long pooling (когда клиент спрашивает у сервера, есть ли события, а тот удерживает соединения, выдавая туда пробелы раз в минуту, а как появится событие - выдает его и закрывает http, т.е. клиент тут же его переоткрывает для следующего)
    - либо, лучший способ - websocket, примеры ищите их тьма, но нужно чтобы сервер был websocket, настоятельно рекомендую, если вам надо php - phpreact
    Ответ написан
    4 комментария
  • Как валидировать большие файлы без загрузки на сервер?

    @rPman
    Гуглить javascript image manipulation или что то похожее, там очень много библиотек

    mime type можно определить по содержимому, тут пример или тут вручную
    Ответ написан
    Комментировать
  • Как распознать картинку с камеры на javascript и найти её в базе?

    @rPman
    Потому что задача не такая простая как хотелось бы, да, перцептивное хеширование и opencl верное направление, но ваша проблема именно в том что вы работаете с камерой а не типличными условиям и готовыми картинками.

    Камера - это повороты и перспективные искажения, проблемы с неравномерной яркостью и мерцанием освещения, инертностью матрицы и глюки алгоритмов пост обработки в смартфонах.

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

    @rPman
    Никак, только пересозданием объекта
    Ответ написан
    Комментировать
  • Как найти одинаковые значения в двух массивах?

    @rPman
    Создаем на основе одного массива индекс (инвертируем ключи и значения), преобразуя массив в объект.
    А затем простым перебором элементов второго массива проверяем наличие по ключу в инвертированным.

    т.е. итоговая трудоемкость просто линейная (на самом деле там умноженное на логарифм но работа с ключами в javascript очень эффективна, на столько что этот логарифм вы заметите только на ОЧЕНЬ БОЛЬШИХ массивах, в крайнем случае можно использовать Map, он точно быстрый.
    Ответ написан
  • Как я могу получить историю google chrome из electron?

    @rPman
    Первая же ссылка в гугле на тот же stackoverflow, уж адаптировать код для nodejs будет не сложно?

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

    @rPman
    key-value это обычно документ-ориентированный подход, т.е. когда вся необходимая информация хранится в виде объекта.

    В вашем случае это будет
    comment_1:{data:comment_data,tags:[tag_1,tag_2,tag_3]}

    справочники храните как отдельные объекты
    tag_1:tag_data

    И не заводите прослойку из id, это лишнее,.. точнее старайтесь чтобы идентификатором была сама строка (если она уникальная) тогда вам не придется городить целый уровень абстракций.

    Да, в документ-ориентированных базах сложнее контролировать целостность, самим надо заниматься индексами и прочее.. такова селяви
    Ответ написан
    2 комментария
  • Как имитировать действия пользователя с помощью Javascript?

    @rPman
    Плагин к браузеру greasemonkey/tampermonkey позволит дергать ваш javascript по условию открытия страниц по regexp с полными правами доступа (т.е. включая iframe). Есть нюанс по одновременно открытым вкладкам, так как вкладки не в фоне работают с меньшим приоритетом и скоростью (а некоторые веб-приложения сами отслеживают что не в фоне и отключают часть активности), это решается вообще своим браузером на базе готового контрола типа webkit или .net WebBrowser (для любой платформы такой есть, код браузера строчек десять получается).

    Кликать либо симулируя события либо дергая метод $('селектор').click(); Встречаются нюансы с работой тега select или поддержкой посимвольного ввода данных в умные input но решаемые.
    Ответ написан
    Комментировать
  • Можно ли запоминать варианты поля input в браузере без прямого сабмита формы?

    @rPman
    если на уровне браузера то плагинами, их миллион - formvault, form history, autofill и прочее, поиграйтесь с ключевыми словами и выбьирите тот что вам удобен
    Ответ написан
  • Как можно внедрить мой js код в страницу в браузере на этапе загрузки?

    @rPman
    Браузер на твоей машине (контролируемой тобою) - плагином, тьма их, популярный greasemonkey (или аналог tampermonkey если нужен и хром)

    Чужая машина - никак, только получив доступ к чужому бакэнду или скриптам, которые он подгружает (например рекламная площадка)
    Ответ написан
    Комментировать
  • Как получить текущее местоположение пользователя Telegram?

    @rPman
    никак, и надеюсь никогда такой возможности не будет
    Ответ написан
    Комментировать
  • Как с помощью js получить ссылку запроса?

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

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

    Это вопрос безопасности, так как иначе вы могли бы открыть какой-нибудь facebook в iframe с автологином пользователя, читать приватный контент и симулировать там клики. Это недопустимо.

    Я имею в виду что вы не можете это делать в стандартном браузере, но если окружение контролируемое вами, то можно поставить какой-нибудь плагин, который даст вам такой доступ (например greasemonkey), но кажется вам это не подходит
    Ответ написан
  • Как записать перенос строки в txt файл?

    @rPman
    в dos а значит в windows, перенос строки состоит из двух символов \r\n, в unix/linux - из одного \n
    Ответ написан
    Комментировать