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

    Wolfnsex
    @Wolfnsex
    Если не хочешь быть первым - не вставай в очередь!
    screen.height - это не высота окна, это высота дисплея, и если её "изменить" то в консоли она тоже изменится, вот Вам пример из моей консоли (изменения рабочей области дисплея с делаю в режиме мобильного просмотра), пример взять отсюда 62d98538a0d85116336587.png

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

    Wolfnsex
    @Wolfnsex
    Если не хочешь быть первым - не вставай в очередь!
    400, 404, 406, 409 - я бы выбрал один из этих в контексте поставленного вопроса.
    Ответ написан
    Комментировать
  • Как сделать вот такой вот инпут?

    Wolfnsex
    @Wolfnsex Куратор тега CSS
    Если не хочешь быть первым - не вставай в очередь!
    Несколько примеров
    1. Один из самых простых
    2. Библиотека, если настроить её под себя, я думаю Вы получите описанный эффект
    3. Автодополнение (просто пример автодополнения)

    То, что Вы ищите называется либо "ComboBox", либо "Автодополнение" (Autocomplete), библиотек и вариаций на эту тему целая прорва.

    Из личного опыта - если Вы делаете проект не "от делать нечего" - рекомендую не злоупотреблять кол-вом библиотек в проекте. Либо делайте проще и самостоятельно, либо подбирайте какой-нибудь фреймворк который удовлетворит максимальное кол-во потребностей проекта (различных UI-фреймворков благо целый воз и маленькая тележка). Уже через несколько месяцев после их внедрения, при большом кол-ве библиотек, какая из них зачем и что делает - разобраться будет сложно даже автору кода...

    P.S.
    И еще момент, как сделать так что бы в конце подставлялось "руб". Сразу после цифры
    добавить к элементу (например <div>'у) в котором содержится число другой элемент, например :after { content: 'rub'; } Показать "на пальцах" к сожалению сейчас не имею возможности, но готовых примеров подобного - просто масса. Например по ссылке выше #2, когда добавляется тег - у него в конце есть крестик, по такому же принципу можно добавить "руб.", либо же добавить к самому INPUT'у боковое поле (как это например умеет делать Bootstrap) с нужным суффиксом.
    Ответ написан
    Комментировать
  • Как создать многоуровневое выпадающее меню для сайта?

    Wolfnsex
    @Wolfnsex Куратор тега PHP
    Если не хочешь быть первым - не вставай в очередь!
    Всё далее сказанное - исключительно личный опыт и мнение, на истину не претендует.

    Лучше написать верстку с уклоном на статику: на чистом html+css,
    Я бы написал именно так, если это возможно. Это как минимум должно быть быстрее чем то же самое + JS.

    на bootstrap с добавлением css
    Это скорее всего будет быстрее с точки зрения получения результата, но на счёт качества такого решения - есть большие сомнения. Вообще, одно из правил HTML'а/вёрстки - если есть возможность реализовать что-то меньшим кол-вом элементов - нужно делать именно так. То есть, если физически есть возможно сделать что-то с помощью одного <div/>'а, а не двух, трёх и т.д. - нужно делать это одним <div/>'ом (без фанатизма конечно).

    или сделать более динамично: на php, реализовав все через цикл для получения вывода элементов: «Категория», «Товары», «О нас» и т.д.?
    Это напрямую зависит от Ваших задач и потребностей. Если Вам нужно что бы меню формировалось на сервере - то его нужно формировать на сервере. К вёрстке непосредственно это не относится. Лично я в своей практике использую и тот и другой подход, а иногда оба сразу (часть меню - статическая, часть - динамическая), в зависимости от желаемого результата.

    P.S. Про "функциональность" не могу судить в контексте данного вопроса, но по скорости загрузки, - вариант без Bootstrap'ов и JS - должен быть максимально быстрым.
    Ответ написан
    Комментировать
  • Как выполнить функцию js при нажатии на кнопку/ссылку?

    Wolfnsex
    @Wolfnsex Куратор тега HTML
    Если не хочешь быть первым - не вставай в очередь!
    Мигает он у Вас по тому, что перезагружается страница, а перезагружается она так как у ссылки есть атрибут "href", при href="" - ссылка ведет на ту же страницу, на которой браузер находится сейчас.

    Анимация там пожалуй вообще не нужна, достаточно "transition", выглядеть будет примерно так:


    P.S. Идея я думаю Вам понятна, дальше её можно развить самостоятельно :)
    Ответ написан
    Комментировать
  • WebSocket - в чем разница между байтовой передачей и текстовой?

    Wolfnsex
    @Wolfnsex
    Если не хочешь быть первым - не вставай в очередь!
    Не совсем понятно, о чём именно Вы говорите и что за "байтовый режим"... Все мои попытки найти ответ на вопрос, о чём хотя бы примерно идёт речь увенчались на данный момент нахождением только этого материала. Подозреваю, что речь идёт о некоем "бинарном" и "текстовом" режимах (хотя, на уровне самих вебсокетов, я чего-то таких режимов не припоминаю, не смотря на то, что когда-то я занимался работой с ними на очень низком уровне). Если так (т.е. речь идёт всё же про "бинарный" и "текстовый" режимы) - судя по всему, разница есть конкретно на уровне JS'а и отличия состоят только в том, как сам JS будет воспринимать полученные им данные, что собственно следует из примера (взято по ссылке выше):

    socket.bufferType = "arraybuffer";
    socket.onmessage = (event) => {
      // event.data является строкой (если текст) или arraybuffer (если двоичные данные)
    };


    Как видите, в зависимости от контекста получаемых/передаваемых данных - они могут интерпретироваться в JS по разному, что (как я понимаю) сделано просто для удобства (работы с исходными данными) и никакой другой практической цели в себе не несёт.
    Ответ написан
    Комментировать
  • $.each как вывести переменную из функции?

    Wolfnsex
    @Wolfnsex
    Если не хочешь быть первым - не вставай в очередь!
    Я думаю, Вам нужно перестать переопределять переменную внутри цикла, т.к. лично у меня и "внутри" ничего не выводит. Выглядеть это будет так:

    var test = 0;
    $.each(b, function(i, item) {
      test = test+ item;
      alert(test); // Выводит
    });
    alert(test);


    Если нужно сохранить родительскую область видимости внутри функции, то так:
    var test = 0;
    $.each(b, (i, item) => {
      test = test+ item;
      alert(test); // Выводит
    });
    
    alert(test);
    Ответ написан
    Комментировать
  • Как хранить пользовательские настройки сайта?

    Wolfnsex
    @Wolfnsex
    Если не хочешь быть первым - не вставай в очередь!
    Есть ли способ полностью локально хранить переменные в браузере без участия сервера?
    Есть - LocalStorage
    Ответ написан
    Комментировать
  • Как лучше, Кнопка "бургер меню" в html или генерировать через js?

    Wolfnsex
    @Wolfnsex Куратор тега HTML
    Если не хочешь быть первым - не вставай в очередь!
    У верстальщиков есть негласное правило - то, что можно сделать CSS'ом (т.е. обойтись без JS) - стоит делать именно CSS'ом. Главное, не гиперболизировать это правило и не возводить его в степень абсолюта. Оно работает в тех случаях, когда трудозатраты на оба варианта (JS/CSS) соизмеримы и вариант с CSS'ом не влечёт за собой замусоривание кода (например, слайдеры можно делать в т.ч. и на "чистом CSS", но такой подход вряд ли можно будет считать хорошим решением в большинстве случаев).
    Ответ написан
    Комментировать
  • Одинарные и двойные кавычки, какие лучше?

    Wolfnsex
    @Wolfnsex Куратор тега HTML
    Если не хочешь быть первым - не вставай в очередь!
    Одинарные и двойные кавычки, какие лучше?
    В ряде языков программирования - двойными кавычками обрамляется строка с переменными или управляющими символами (перевод строки, возврат каретки, и т.д.), одинарными - константные строки (при этом управляющие символы в них тоже не интерпретируются). *просто имейте в виду, что в ряде случаев (в некоторых языках) кавычки могут иметь не только разное начертание, но и по разному интерпретироваться.

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

    В CSS - обычно применяют одинарные. Но, в CSS кавычки не так уж и часто можно встретить и в целом это язык довольно линейный, по этому там этот вопрос на мой взгляд не особо принципиален. *Не редко встречал например такой вариант, когда названия шрифтов обрамлены двойными кавычками, а URL'ы - одинарными (хотя по стандарту - обрамление URL'ов кавычками не является обязательным) - лично у меня даже такие варианты никакого дискомфорта не вызывают.

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

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

    Wolfnsex
    @Wolfnsex
    Если не хочешь быть первым - не вставай в очередь!
    Почему Ajax не отправляет файлы?
    По тому, что файлы в форме не сериализуются. Для отправки файлов можно использовать FormData, можно поискать тут, уже готовые решения, так же можно воспользоваться поиском и найти ответ по первой попавшейся ссылке.
    Ответ написан
    Комментировать
  • Почему происходит задержка анимации?

    Wolfnsex
    @Wolfnsex Куратор тега CSS
    Если не хочешь быть первым - не вставай в очередь!
    Почему происходит задержка анимации?
    По тому, что у блока который Вы сворачиваете не фиксированная высота (точнее по тому, что вы меняете её на height: auto). И в Вашем случае, он сворачивается так, буд-то он имел высоту 500px, а не ту, которую он имел фактически (если вы зададите ему фактическую высоту в 500px или растянете его с помощью содержимого до 500px - задержки не будет).

    "Хорошего" решения - нет. Единственное решение в данном случае - не используйте height: auto.
    Ответ написан
    2 комментария
  • Есть ли какая-нибудь разница между document.ready и атрибутом defer?

    Wolfnsex
    @Wolfnsex
    Если не хочешь быть первым - не вставай в очередь!
    Есть ли какая-нибудь разница между document.ready и атрибутом defer?
    Есть. Document.ready - это событие, а defer - это атрибут асинхронной загрузки скриптов с сохранением порядка их выполнения.

    Является ли что-то из этого более предпочтительным?
    Я думаю одно другое не может заменить в полной мере и ещё, как мне кажется, если Вы оставите document.ready там же где он и был, не зависимо от того, будет ли использоваться defer или нет, для совместимости и переносимости кода в будущем - это будет оптимальным решением.
    Ответ написан
    Комментировать
  • Что почитать о создании многопользовательского приложения для редактирования данных?

    Wolfnsex
    @Wolfnsex
    Если не хочешь быть первым - не вставай в очередь!
    Что можно почитать по этому поводу, в каком направлении хотя бы гуглить?
    Основных вариантов, на вскидку, могу предложить следующие:
    1. При редактировании записи (строки или любой другой сущности, по вашему усмотрению) на неё устанавливается метка, примерно такая: "редактируется пользователем таким-то", соответствующая метка удаляется по завершению редактирования. Таким образом это работает в некоторых CMS.
    2. Можно придумать какую-то систему на основе WebSocket-протокола, я думаю сервисы на подобии GoogleDocs или Trello (позволяющие редактировать один документ сразу нескольким пользователям) работают именно на его основе, это как минимум позволит видеть обновления данных всем пользователям практически в реальном времени
    3. Можно хранить все версии данных, а потом что-то делать с ними... Что именно делать - пока сказать затрудняюсь, т.к. не до конца понимаю, какие у Вас конечные требования, возможно этот вариант не подойдёт.
    Ответ написан
    Комментировать
  • Сложно ли учить новый язык программирования после JavaScript?

    Wolfnsex
    @Wolfnsex
    Если не хочешь быть первым - не вставай в очередь!
    Сложно ли учить новый язык программирования после JavaScript?
    Что Вы подразумеваете под словом "учить новый язык"? Учить синтаксис нового языка? Нет, не сложно, но не особо понятно, зачем оно в целом Вам надо? Знание синтаксиса языка без более глубокого понимания происходящего на более низком уровне - всё равно, что знание алфавита без понимания того, что означаю слова (составленные из букв этого алфавита).

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

    Отвечая на Ваш вопрос буквально - "учить новый язык" не сложно, ни до, ни после...
    Ответ написан
    Комментировать
  • Как динамически подгружать список городов при выборе страны select`ом?

    Wolfnsex
    @Wolfnsex Куратор тега HTML
    Если не хочешь быть первым - не вставай в очередь!
    где можно взять массив городов
    Изначально, я думаю, в интернете, например тут. После чего, Вы можете их сохранить либо в один большой-большой JSON, либо так и оставить в базе данных и получать их оттуда.

    Далее, алгоритм выглядит примерно так:
    1. Пользователь выбирает страну, на сервер отправляется ID выбранной в селекте страны (GET или POST запросом)
    2. В ответ от сервера приходит список регионов/городов выбранной страны, предположительно в формате JSON
    3. Полученный список разбирается на ID=Значение, которыми заполняется второй селект

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

    Wolfnsex
    @Wolfnsex
    Если не хочешь быть первым - не вставай в очередь!
    Как правильно перенести скрипт из файла .html в .js файл?

    1. Вырезаете всё, что находится между тегами <script></script>
    2. Вставляете это в файл с раширением .js
    3. Подключаете этот файл в нужном месте на нужной странице, примерно таким образом:
    <script src="/путь/до/созданного/файла.js"></script>
    Ответ написан
    2 комментария
  • Как стилизировать Рекапчу?

    Wolfnsex
    @Wolfnsex Куратор тега HTML
    Если не хочешь быть первым - не вставай в очередь!
    В дополнение к предыдущему ответу, мне кажется тут Вы найдете ответы на большинство Ваших вопросов касательно стилизации реКаптчи.
    Ответ написан
    Комментировать
  • Знание kotlin может заменить знание javascript?

    Wolfnsex
    @Wolfnsex
    Если не хочешь быть первым - не вставай в очередь!
    Kotlin транслируется в javascript код, следовательно вопрос знание только kotlin заменит javascript???
    Над JS есть много надстроек, не только Kotlin... всё зависит от того, насколько качественный результат Вам нужен на выходе. Если результат уровня "что б работало" - то знать можно что угодно, если же нужен качественный результат - лучше изучать первоисточник всё же... к тому же, он довольно примитивный и учить его относительно легко.
    Ответ написан
    Комментировать