Ответы пользователя по тегу JavaScript
  • Как работает этот js-код?

    @Samuel_Leonardo
    t.length >>>0 используется что бы привести t.length в unsigned int 32
    (вообще операция >>> правый побитовый сдвиг с заполнением нулями , работает так:
    -9 >>> 2 (по осн.10)
    = 00111111111111111111111111111101 (по осн.2)
    = 1073741821 (по осн.10)
    )

    !! превращает выражение в boolean тип, работает примерно так:
    !!0 === false

    ~ побитовое НЕ :
    9 (по осн. 10)
    = 00000000000000000000000000001001 (по осн. 2)
    --------------------------------
    ~9 (по осн. 10)
    = 11111111111111111111111111110110 (по осн. 2)
    = -10 (по осн. 10)

    В данном случае IndexOf возвращает индекс элемента начиная с 0
    и если бы использовалось бы обычное не то получили бы
    !0 == true
    !1 == false
    что явно не решает нашей задачи,
    а так получаем -1,-2,-3,-4
    далее, если нажата клавиша 37 будет следующая ситуация
    !e.charcode будет true
    true && -2 даст -2
    !! (-2 ) получаем true, а значит клавишу обрабатываем
    Ответ написан
    1 комментарий
  • Как работает этот js-код?

    @Samuel_Leonardo
    В начале определяется метод для массива indexOf(возвращает позицию элемента который мы ищем), по сути является фиксом для ie8-
    далее на нажатие клавиши в input прикрепляется функция validate

    e = e || event
    не все браузеры добавляют аргумент к функции поэтому берем e, иначе event
    e.charCode || e.keyCode берем код клавиши по аналогичному методу
    String.fromCharCode превращаем в элементарную строку
    /[a-z0-9]/i.test () проверяем вхождение символов 0-9 и a-z
    иначе
    !!(!e.charCode && ~[8,37,39,46].indexOf(e.keyCode))
    если нет charCode и Keycode не в массиве [8,37,39,46]
    обрабатывает клавиши (Backspace,left arrow,right arrow,delete)
    Ответ написан
    1 комментарий
  • Как сделать xmlHttpRequest кроссбраузерным?

    @Samuel_Leonardo
    var xmlHttp = new XMLHttpRequest();
    (IE7+, Firefox, Chrome, Safari, and Opera)
    Ответ написан