Ответы пользователя по тегу JavaScript
  • Можно ли на js сделать динамическое добавление html?

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

    include это частный случай шаблонизатора. Сами шаблонизаторы очень простые, фактически можно без каких либо библиотек просто использовать $('#replace_element_id').innerHTML='html text string' а саму html брать тут же из документа, разместив его например в скрытых div или как рекомендуют <script type="text/html">....</script> (будьте осторожны со скриптами внутри и валидностью верстки)

    Эта стратегия называется single page app когда абсолютно все необходимое размещено в одной странице, статике, которая загружается однократно и кешируется на клиентской стороне. Страницы веб приложения и их параметры разделяются с помощью anchor (index.html#page/arguments/etc), в этом случае будет корректна работать история браузера, разбираются они javascript простым анализом url. Никаких библиотек для этого не требуется, это стандартная фича в любом браузере.

    Если же вам нужны нестатичные данные, они загружаются с вашего веб-сервера в виде json файлов (такие файлы легко разобрать в javascript с помощью JSON.parse(text) с помощью ajax (или XMLHttpRequest если вы не хотите подключать библиотеки)
    Ответ написан
    Комментировать
  • Как получить цвет ссылки, который грузиться с стороннего сервиса?

    @rPman
    Вы явно где то ошиблись, не важно, как dom строится, с помощь javascript или загружается прямо из файла, javascript должен иметь к самой его последней версии.

    Исключение, доступ к iframe, со стороннего домена.
    Ответ написан
    Комментировать
  • Сайт не корректно отображается на ноутбуке, как быть?

    @rPman
    Наверняка - корявые плагины в браузере у заказчика, к сожалению это наша реальность и с этим ничего не поделаешь. Попробуйте для отладки сохранить на сервере содержимое document.innerHTML и сравните с вашим.
    Ответ написан
    Комментировать
  • Как найти координаты белых областей на картинке через JS?

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

    По завершению у вас метод вернет список областей, являющихся белыми.

    p.s. если белые области чисто белые и замкнутые (точками другого цвета) то можно используя алгоритм заливки, сделать сканирование изображение вертикальными или горизонтальными линиями (с шагом равным или меньше минимального размера области) и как только находите белое изображение - заливаете его пока цвет белый (заливку производите в своей битовой маске - один на пиксел, т.е. итоговая область пиксельная).

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

    @rPman
    ключевые слова:
    javascript
    ajax
    websocket

    p.s. ладно вы и сами это поняли. Вы должны формировать страницу не на серверной стороне в php, а на клиентской, в javascript на onload (фреймворков шаблонизаторов пруд пруди, но никто не мешает вам делать все самим), и опрашивая либо по таймеру сервер (плохая практика) либо используя вебсокеты, ожидать от сервера данных.
    Ответ написан
  • Как передать управление аккаунтом телеграм программе?

    @rPman
    Какими инструментами, приложениями или библиотеками можно воспользоваться, чтобы оперативно отслеживать новые сообщения на публичных каналах telegram?
    там решение https://github.com/TehDmitry/tg-cli

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

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

    p.s. очень грустно будет жить нам в будущем, все приложение в вебе, корявее некуда.
    Ответ написан
    2 комментария
  • Какие хитрости есть при работе с большим количеством данных в js?

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

    В вашем случае можно вставлять сразу целой строчкой (тег и содержимое tr) или даже подготовить всю таблицу в виде строки а потом вставить ее просто поместив ее в innerHTML нужного div.
    Ответ написан
    Комментировать
  • Знаете ли вы решения для peer-to-peer тоннелей через Websocket?

    @rPman
    наверное самый легкий вебсервер и клиент к сокетам, идеален для IoT:
    https://github.com/jeremyhahn/cwebsocket

    вообще то их много, гуглить websocket client c (или arm или iot)

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

    @rPman
    Шаблон должен иметь описание требуемых изменений в базе данных.

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

    Отдельно описываем связи, например для справочников (где то должно быть описание имеющихся таблиц-справочников) - на форме это комбобокс, в таблице поле идентификатор с foreign key на таблицу-классификатор.

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

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

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

    @rPman
    Только если оба сайта подконтрольны вам, те.. вы можете добавлять туда свой код!

    Если без заморочек - через свой сторонний сервис, GET HTTP запросами, кодируя нужные вам данные в параметрах (до 64кб после кодирования).
    Оба сайта должны делать запросы к нему с пометкой, запрос данных или получение.

    К сожалению, если у вас https, вас сервис тоже должен использовать https.
    Ответ написан
    Комментировать
  • Какие есть библиотеки (скрипты) для автозаполнения документов?

    @rPman
    Открываем страницу в своем браузере (на основе любого решения на любом языке обычно это какой-нибудь WebBrowser контрол) в пару десяток строчек кода и инжектим в нее свой javascript, который эмулируем действия пользователя, обычно это очень простой код, сложнее когда формы многоэтапные.

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

    Я писал подобное на java, совсем давно были эксперименты на mono (c#), там используется основанный на firefox движок, работает неплохо и в безголовном варианте на любой дешевой vps-ке.

    Если нет необходимости скрывать интерфейс (запуск в виде службы), можно использовать какие-либо плагины к браузеру (тот же tempermonkey/greasemonkey) и реализовать все полностью на javascript.
    Ответ написан
    Комментировать
  • Почему слетаете кодировка при ajax запросе методом load jQuery?

    @rPman
    что выдает curl -v http://вашсайт.../inc/calc-parts/sketch-straight.php

    p.s. немного смущает пробел после php в ссылке, плюс нет никакого смысла да и не красиво в ссылках на данные указывать анчор #, это сугубо html ui решение
    Ответ написан
  • Как сделать, чтобы при перезагрузке страницы, страница начиналась просматриваться с самого верха?

    @rPman
    где-нибудь сверху поставьте <a href="#" id="xxx"> а в нужный момент перейдите location.href = "#xxx";
    Ответ написан
    Комментировать
  • Какие варианты защиты, кто пробовал, Обфускация JavaScript?

    @rPman
    Переделайте все на serverside, тем более благодаря nodejs это будет не так сложно как раньше.

    т.е. исключите частично или полностью javascript на клиентской стороне, тогда воровать будет просто нечего.
    Ответ написан
    Комментировать
  • Как Запретить скрипт если форма закрыта или заполнена?

    @rPman
    Сохраните факт отправки где-нибудь, на выбор - cookies (рекомендуется, их поддерживают все и они простые), localStorage или на сервере (при следующем открытии формы вы должны будете вернуть этот флаг, но осторожно, при переходе назад в браузере запрос к серверу может не произойти, т.е. вы должны его сделать сами, перед созданием таймера)
    Ответ написан
    Комментировать
  • Можно ли отправить AJAX запрос POST и далее уже работать с этими даннымим в PHP?

    @rPman
    Надежнее запускать серверное приложение в виде демона, если у вас критичная к остановке обработка (например лимиты времени работы скрипта) плюс удобнее разрабатывать приложение в виде standalone cli приложения.

    Мало того, можно дальше пойти, начать писать на php react асинхроные приложения, когда уже оно само представляется в виде http/websocket сервера, без необходимости восстанавливать контекст на каждый запрос.
    Ответ написан
    Комментировать
  • Event loop и то как работает асинхронность это одно и тоже или просто связано?

    @rPman
    Где то под капотом nodejs работает обычный event loop, все асинхронные методы складывают в очередь свои события, каждый кусок кода выполняется, будучи вызван именно от сюда.

    Все методы должны как то уметь работать асинхронно, т.е. будить event loop при завершении работы, если не умеют - наверное для них (каждого вызова) запускается свой поток, внутри которого работает обычный синхронный вызов, по окончании работы которого так же дергается тот же event loop.

    например мы хотим асинхронно файл прочитать - метод получает от операционной системы хандлер объекта, который умеет работать асинхронно, как только получили порцию данных - в цикле event loop завершает работать метод ожидания хоть какого то события (список хандлеров в параметрах либо это специализированный семафор, который все дергают) и обрабатывает событие, которое его разбудило - т.е. видим что пришли данные и вызываем callback метод, у казанный в парметрах вызова работы с файлом, в параметрах - результаты работы. После их обработки снова в цикле вызывается метод ожидания. Таким образом основной цикл работает в одном потоке, но ожидания только если нет событий.
    Ответ написан
  • Как распарсить страницу с полной прогрузкой javascript?

    @rPman
    Не мучайтесь, запускайте полноценный браузер (webkit есть под все платформы), при этом вы имеете полный доступ к загружаемой странице, можете инжектить свой код, можете просто получить документ в виде xml (не файл а именно DOM модель, собираемую в т.ч. javascript)

    И главное, веб-сайт ничего не сможет сделать чтобы предотвратить ваши попытки автоматизации работы с сайтом (кроме статистических конечно, но тут уже вопрос реализации и ваших требований)
    Ответ написан