Задать вопрос
Ответы пользователя по тегу HTML
  • Как правильно спарсить HTML, получив размеры элементов?

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

    Пример, вот этот модуль инжектится на страницу, перебирает все объекты и оценивает их видимость и даже отслеживает изменения по таймеру (идеологически неправильно, логичнее на хендлеры повесить колбек и отслеживать их), работает даже на слабых машинах с огромными страницами приемлемое время (сотни миллисекунд на десяток тысяч нод).
    Ответ написан
    Комментировать
  • Можно ли на 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 если вы не хотите подключать библиотеки)
    Ответ написан
    Комментировать
  • Как отобразить 1000 изображений?

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

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

    В итоге у вас будет только один запрос на сервер вместо 1000, что само по себе на порядок быстрее, и иконки будут выведены только после полной их загрузки (в случае с jpeg кстати есть бонус - будут выводиться сначала пониженное разрешение потом повыше).
    Ответ написан
  • Сайт не корректно отображается на ноутбуке, как быть?

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

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

    @rPman
    на onclick/onchange поля ввода (в зависимости, когда именно нужно делать запрос) ставите обработчик javascript которые используя ajax с помощью какой-либо библиотеки, тот же jquery (или более низкий уровень XMLHttpRequest без библиотек) а на сервере на этот запрос вы уже делаете sql запрос и возвращаете результат.

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

    @rPman
    Положите свое видео в виде файла на свой сервер и заверните его в тег video

    Форматы и кодеки видеофайла смотреть тут:
    https://ru.wikipedia.org/wiki/HTML5_video
    https://developer.mozilla.org/ru/docs/Web/HTML/Под...

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

    @rPman
    в 99% случаев авторизация нужна на всех страницах, после авторизации пользователь хочет видеть ту же самую страницу.

    javascript форма авторизации получается очень простой, ей почти все равно, одна страница авторизации или несколько.

    http авторизации потребует передачу текущей страницы в качестве одного из параметров в форму авторизации, с последующим переходом по этой ссылке, как недостаток - теряются введенные данные на этой странице, если они там были (например форма заказа, которую пользователь заполнил до авторизации), т.е. для ее сохранения вам опять понадобится что то изобретать, а javascript авторизация может не перезагружать страницу со всеми вытекающими бонусами.
    Ответ написан
    Комментировать
  • Вопрос по поводу организации сайта на статическом HTML #2?

    @rPman
    Не буду повторять вышесказанные очевидности… но порекомендую мыслить в следующем направлении:
    1. разделить контент (статьи) на две части короткое емкое описание и полный текст
    2. ограничить доступ к полным статьям поисковым роботам (кому от этого плохо? так ли вам нужны поисковики на весь контент?)
    3. ограничить доступ к полным статьям на пользователей (куки)
    3.a) изучать рефереры и юзерагент (в общем случае можно даже выявить не совсем опытных сканеров, последовательно выкачивающих ресурсы, вычисляя распределение во времени и т.п. не тривиально но реально)
    3.b) ip, подсети (под суетитесь и соберите информацию о доступных хостерах и их подсетях), анонимных прокси, i2p и tor роутерах, информация обо всем этом общедоступна.
    p.s. интересно, можно ли у антивирусных компаний запрашивать информацию о текущих сетях ботнетов?
    Ограничение — частота возможных запросов, при превышении отлуп… при достаточно большом объеме данных время, которое потребуется атакующему собрать все данные станет неадекватно большим даже при наличии ресурсов вида маленький ботнет
    4. ссылка на полную статью размещается в короткой статье, статичной делать ее нельзя — т.е. должна формироваться каждый раз новая, легко вычисляемой тоже (детские глупости в виде последовательно растущего номера тут не подходят), воспользоваться всем что доступно в аресенале для защиты от ботов, полиморфный javascript, привязка скрипта к багам популярных браузеров (защита от интерпретаторов), капчи как графические так и логические загадки

    Если после этого вы не распугаете всех своих посетителей, возможно вы продержитесь пол года-год :)
    Ответ написан
    2 комментария
  • Вопрос по поводу организации сайта на статическом HTML

    @rPman
    Я просто грущу… для этой задачи требуют фреймворк???
    Создаете make файл коммандный (bash/cmd/ets..) вида:
    php my_page_template.php > my_site_paje.html
    ....
    

    А внутри файлов обычный php… он именно для этого и создавался.

    ВСЕ, внутри php можете подключать любой из миллиона cms (в разумных пределах конечно же), фреймоврков и т.п. а можете просто include ограничиться
    Ответ написан
    Комментировать
  • Поиск менеджера паролей с динамическим автозаполнением

    @rPman
    У вас только один сайт так мешает? Напишите расширение, greasemonkey (или для хрома нативно) невероятно простые, ваш случай укладывается в одну строчку (в зависимости от желания… можно сразу пароль закодировать в плагин, можно интегрироваться с вашим автозаполняющим формы — и создать плагином фиктивное поле для пароля (пусть в него пароль вставляется менеджером паролей) а после плагин скриптом раскидывает его куда нужно.
    Ответ написан
  • Автономный браузерный движок

    @rPman
    Я работал с .net на с# компонент webbrowser (в windows текущая установленная версия IE) и успешно проверял его работоспособность на mono (используется библиотеки firefox).

    Из явных проблем — неоднозначности в определении окончания загрузки страницы и некоторые особенности по выполнении своего javascript кода на странице — вместо вызова самого метода с большей совместимостью (если требуется вызывать методы из чужого не поддерживаемого кода) лучше вызывать этот метод через setTimeout(1).
    Ответ написан
    Комментировать