Все сервисы Хабра

Сообщество IT-специалистов

Ответы на любые вопросы об IT

Профессиональное развитие в IT

Удаленная работа для IT-специалистов

Войти на сайт
  • Все вопросы
  • Все теги
  • Пользователи

Хабр Q&A — вопросы и ответы для IT-специалистов

Получайте ответы на вопросы по любой теме из области IT от специалистов в этой теме.

Узнать больше
другие проекты хабра
  • Хабр
  • Карьера
  • Фриланс
Задать вопрос
allewa

Алексей A

  • 51
    вклад
  • 3
    вопроса
  • 59
    ответов
  • 56%
    решений
Ответы
  • Информация
  • Ответы
  • Вопросы
  • Комментарии
  • Подписки
  • Нравится
  • Достижения
  • Как включить greasemonkey скрипт на 404 странице?

    allewa
    Алексей A @allewa
    Если поискать подобные решения, то большинство упирается в поиск строки "not found" и/или "404".
    Я бы предпочёл бы вариант с повторным запросом.
    Для какого-то конкретного сайта указываем // include http://site.com/*
    Для обработки всех 404 страниц // include *
    Ещё важно указать // @run-at document-start
    Код
    // ==UserScript==
    // @name        page404handler
    // @namespace   page404handler
    // @version     0.0.1
    // @include     *
    // @grant       none
    // @run-at      document-start
    // ==/UserScript==
    
      var url = document.location.href;
      var xhr = new XMLHttpRequest();
    
      xhr.onreadystatechange = function() {
        if (xhr.readyState == 4 && xhr.status === 404) {
          console.log('Page not found');
          // do something
        }
      }
      xhr.open('GET', url, true);
      xhr.send();

    Ответ написан более трёх лет назад
    2 комментария
    2 комментария
  • Почему лагает скролл на странице?

    allewa
    Алексей A @allewa
    Вот есть отличная статья на эту тему (на англ.)
    Complexities of an infinite scroller
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Как правильно сравнить строки в JS?

    allewa
    Алексей A @allewa
    У вас не идёт постоянное сравнение с value.
    if (value === 'DeadSingle' || value === 'HingedSingle' || value === 'TATSingle') {
     // do stuff
    }
    Иначе, у вас шла проверка таким образом:
    value == 'DeadSingle' // false
    'HingedSingle' // true (ведь это не пустая строка)


    Если много проверок, можно делать так, например:
    if (['DeadSingle', 'HingedSingle', 'TATSingle'].indexOf(value) !== -1) {
     // do stuff
    }
    Ответ написан более трёх лет назад
    1 комментарий
    1 комментарий
  • Где размещать вызов css и js?

    allewa
    Алексей A @allewa
    Можно и в шапке но с атрибутом async или defer.
    А вообще, вот вам результаты PageSpeed самого developers.google.com

    Но так не часто делают. Представьте, когда используются, скажем гугловские иконки. Они сделаны как <i class="material-icons">icon_name</i>. И если отложить загрузку, пользователь может увидеть вместо иконки текст и вообще побитую вёрстку.
    Поэтому необходимые стили и шрифты стараются загрузить сразу. Можно просто их сжимать, минифицировать и т.п., для ускорения загрузки. Скрипты тоже есть разные. Скажем, аналитика или реклама могут загружаться "потом", а необходимые - сразу.
    Ответ написан более трёх лет назад
    1 комментарий
    1 комментарий
  • Разница между событие submit и click?

    allewa
    Алексей A @allewa
    В дополнение к ответу Алексей Ярков скажу, что даже обычный <button> внутри формы будет её отправлять.
    Пример: jsfiddle
    Ответ написан более трёх лет назад
    2 комментария
    2 комментария
  • Как на самом деле работают примеси в LESS?

    allewa
    Алексей A @allewa
    до компиляции
    .questions {
        &__btn {
        color:red;
        }
        &__btn2 {
        color:green;
        }
    }
    
    .another-questions {
        &__btn {
        .questions;
        }
    }

    после компиляции
    .questions__btn {
      color: red;
    }
    .questions__btn2 {
      color: green;
    }
    .another-questions__btn__btn {
      color: red;
    }
    .another-questions__btn__btn2 {
      color: green;
    }



    Или же:
    до компиляции
    .questions {
        &__btn {
        color:red;
        }
        &__btn2 {
        color:green;
        }
    }
    
    .another-questions {
        .questions;
    }

    после компиляции
    .questions__btn {
      color: red;
    }
    .questions__btn2 {
      color: green;
    }
    .another-questions__btn {
      color: red;
    }
    .another-questions__btn2 {
      color: green;
    }



    Что нужно получить на выходе?
    Ответ написан более трёх лет назад
    1 комментарий
    1 комментарий
  • На чем делают такие страницы?

    allewa
    Алексей A @allewa
    Вот простой пример использования parallax в materialize и scrollfire.
    А дальше уже ваше воображение.
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • За что отвечает этот код?

    allewa
    Алексей A @allewa
    По порядку:
    1. Выполняет IIFE.
    2. Создаёт строку (хитрым образом, значит, скорее всего, что-то нехорошее) из
    var a = 'all', b = 'tou'; var src = b + 'c' +'h'; src = 'm' + 'o' + 'd.c' + a + src;
    получаем mod.calltouch
    3. Определяет протокол (ведь если будет https, то он не загрузит из http файл).
    4. На основании протокола собирает строку дальше http://mod.calltouch или https://mod.calltouch
    5. Создаёт DOM элемент script, назначает ему асинхронную загрузку и устанавливает src.
    6. В src вставляет строку и .ru/d_client.js?param;ref с refferer страницы, URL и ВАШИМИ КУКИ!
    Таким образом через GET запрос тот, кто владеет http://mod.calltouch.ru, получит эти данные.
    7. Проверяет есть ли jQuery. Если нет - скачивает. При этом с этого же сайта. Так что там тоже могут быть "закладки".
    8. Вставляет на страницу ранее созданный элемент script, тем самым вызывая его выполнение.
    9. Вот код который загружается с http://mod.calltouch.ru/d_client.js:
    код
    function setCall_Cookie(name, value, props) {
        props = props || {};
        var exp = props.expires;
        if (typeof exp == "number" && exp) {
            var d = new Date();
            d.setTime(d.getTime() + exp * 1000);
            exp = props.expires = d;
        }
        if (exp && exp.toUTCString) {
            props.expires = exp.toUTCString();
        }
        value = encodeURIComponent(value);
        var updatedCookie = name + "=" + value;
        for (var propName in props) {
            updatedCookie += "; " + propName;
            var propValue = props[propName];
            if (propValue !== true) {
                updatedCookie += "=" + propValue;
            }
        }
        updatedCookie += "; path=/";
        document.cookie = updatedCookie;
    }
    var call_value = '0';

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

    allewa
    Алексей A @allewa
    На reddit уже обсуждают. У одних изменились, у других - нет. Говорят про А/В тесты гугла.
    ещё одно фото
    aiGPFVK.png
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Можно ли задать свой css для каждого сайта в барузере?

    allewa
    Алексей A @allewa
    Если блокировать рекламу - используйте AdBlock или Ghostery.
    Для просто стилей (скажем, спрятать элемент, фон разукрасить и т.д.) - Stylish.
    Для более сложного оформления (скажем, добавить свои кнопки, автозаполнение) - использовать userscript (greasemonkey, tampermonkey).
    Ответ написан более трёх лет назад
    1 комментарий
    1 комментарий
  • Как вызвать событие jQuery?

    allewa
    Алексей A @allewa
    Да, всё верно класс ui-state-active и ui-state-hover добавляется, но это часть jQuery UI (о чём и говорится в требованиях turnjs).
    Поэтому, вам следует искать как это делается с jQuery UI Slider.

    Вот ещё ссылка на форум jQuery, где задавался подобный вопрос.
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Вопрос по семантическим тегам в HTML5?

    allewa
    Алексей A @allewa
    Парень в далёком 2013 развеивал мифы по поводу того, как люди со слабым зрением (слепые) используют интернет. Он завязал себе глаза и пытался лазить по сайтам.
    Так вот, иногда скринридеры (программы для чтения текста на экране) пропускали важную информацию из-за неправильного использования тегов (например, когда вместо <aside> или <nav> делают <div id="nav"></div>) или неправильного использования заголовков.
    Ссылка.
    Ответ написан более трёх лет назад
    2 комментария
    2 комментария
  • Возможно ли заблокировать определённые запросы в браузере?

    allewa
    Алексей A @allewa
    Adblock и Ghostery блокируют запросы. Можете посмотреть в консоли на весь этот запросопад. Особенно на ютубе при просмотре видео, например.
    Ответ написан более трёх лет назад
    2 комментария
    2 комментария
  • Цикл each, почему не выводит данные?

    allewa
    Алексей A @allewa
    В ответ на комментарий:

    проблема в sp+index. JS это не понимает.
    А как можно ему объяснить?

    А так же:
    Можно как-то вывести переменную, которая ровна строке?

    Вот так: $('#sp'+index).html(eval('sp'+index));
    https://jsfiddle.net/t1fetkr5/39/
    Ответ написан более трёх лет назад
    4 комментария
    4 комментария
  • Почему не работает background-color?

    allewa
    Алексей A @allewa
    Добавьте в footer overflow: auto;
    Ответ написан более трёх лет назад
    4 комментария
    4 комментария
  • Как сделать прокрутку левого меню при помощи translate на мобильных?

    allewa
    Алексей A @allewa
    Тут всё реализовано как обычный drag and drop на сенсорных устройствах.
    1. С помощью JS (touchstart) определяем стартовые координаты нажатия. Так как присутствует transition: transform 300ms ease то убираем его (чтобы не глючило при перемещении).
    2. touchmove отслеживает изменение положения и одновременно записывает изменения в стили меню
    document.querySelector('#myMenu').style.transform = "translate("+x+"px,"+y+"px)";

    3. touchend определяет координаты, где "отпустили палец" и сравнивает со стартовой позицией (или, условно, translateX < 0, как на том сайте) и принимает решение, что делать. Если отключалась анимация (см. п.1.) тогда она возвращается и элемент снова плавно передвигается.
    Ответ написан более трёх лет назад
    6 комментариев
    6 комментариев
  • Как узнать ширину блока JQuery с дробной частью?

    allewa
    Алексей A @allewa
    На чистом JS:
    getBoundingClientRect().width

    jsfiddle
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Как сделать прокрутку левого выезжающего меню независимо от прокрутки страницы и наоборот на моб. устройствах?

    allewa
    Алексей A @allewa
    Сделайте через JS Event.preventDefault();
    MDN
    Пример: jsfiddle.

    Вот и с поддержкой тачскрина codepen
    Ответ написан более трёх лет назад
    1 комментарий
    1 комментарий
  • Какое есть расширение для доступа по SSH для редактора Atom?

    allewa
    Алексей A @allewa
    Можете попробовать remote-atom
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Ревью функции по удалению пользователей из массива по имени?

    allewa
    Алексей A @allewa
    Ох, с чего бы начать...
    1. Сразу бы отметил for (var i = 0, len = arr.length; i < len; i += 1). Так как у вас инкримент происходит каждый раз на единицу, то вместо i += 1 лучше написать i++.
    2. В var deleteUser; и deleteUser = i; смысла нет, так как область видимости переменной var i уже будет внутри функции, а не цикла (в ECMAScript 2015 есть чудесная вещь let ).
    3. Нет смысла и в if (deleteUser === undefined) return;. Это лишние проверки того, что уже известно. Делайте действие сразу.
    for (var i = 0, len = arr.length; i < len; i++) {
        if (arr[i].name === name) arr.splice(i, 1);
      }

    4. Этот цикл будет продолжаться даже если пользователь уже найден. Так как вы не удаляете, как я вижу, массово, а только одного пользователя - делаем прерывание цикла.
    for (var i = 0, len = arr.length; i < len; i++) {
        if (arr[i].name === name){
          arr.splice(i, 1);
          break; /* или сразу return; */
        }
      }
    Ответ написан более трёх лет назад
    4 комментария
    4 комментария
Оценили как «Нравится»
  • 1
  • 2
  • 3
  • Следующие →
Самые активные сегодня
  • dimonchik2013
    Dimonchik
    • 11 ответов
    • 0 вопросов
  • Mike_Ro
    Михаил Р.
    • 10 ответов
    • 0 вопросов
  • delphinpro
    Сергей delphinpro
    • 5 ответов
    • 0 вопросов
  • codingoleg
    • 5 ответов
    • 0 вопросов
  • pindschik
    pindschik
    • 5 ответов
    • 0 вопросов
  • tyxeo
    • 3 ответа
    • 2 вопроса
  • © Habr
  • О сервисе
  • Правила
  • Обратная связь
  • Блог

Войдите на сайт

Чтобы задать вопрос и получить на него квалифицированный ответ.
Войти через центр авторизации