Ответы пользователя по тегу JavaScript
  • Как установить один обработчик на несколько событий на клссическом JS?

    @vacslav-dev
    web-developer
    var handler = function() {
    }
    elem.addEventListener('mousedown', handler);
    elem.addEventListener('touchstart', handler);
    elem.addEventListener('любое событие', handler);
    Ответ написан
    Комментировать
  • Как сделать чтобы alert появлялся только при первой загрузке страницы?

    @vacslav-dev
    web-developer
    Добавлять запись в куки, при первом посещении, и проверять ее наличие. Если записи нет - выводим сообщение и устанавливаем куку, если есть - ничего не делаем.
    Ответ написан
    Комментировать
  • Как гарантировать порядок вызова обработчиков событий jQuery?

    @vacslav-dev
    web-developer
    Если button и imput элементы формы, и при клике на button происходит отправка данной формы, то можно повесить обработчик на событие submit формы.
    Ответ написан
    Комментировать
  • Как вызвать произвольную функцию при отправке формы?

    @vacslav-dev
    web-developer
    На событие submit формы навешивается обработчик, первым параметром принимающий объект события. Для того чтобы остановить отправку необходимо вызвать метод объекта события preventDefault.
    Пример:
    var myForm = document.getElementById("myForm");
    myForm.addEventListener('submit', function(event){
         //какой то код
        if(условие отмены отправки){
              event.preventDefault();
              return false;
        }
    });
    Ответ написан
    2 комментария
  • Как слать postmessage из iframe родителю?

    @vacslav-dev
    web-developer
    В iframe:
    parent.postMessage(JSON.stringify({key: 'value'}), 'http://адрес-родительского-окна');

    Вторым параметром в postMessage можно передать '*' - тогда сообщение будет доступно для всех окон.
    Сериализация в JSON первого параметра нужна для поддержки IE ниже не то 8 не то 9 версии, точно не вспомню.
    В родительском окне:
    function handlerMessage(e){
        var data = JSON.parse(e.data);
        var origin = e.origin;
        if(origin !== 'http://адрес_iframe'){
            return false;
        }
        // здесть можно использовать data как объект.
    }
    if(window.addEventListener){
        window.addEventListener('message', handlerMessage);
    } else {
        window.attachEvent('message', handlerMessage);
    }

    Код на 100% рабочий, с боевого проекта.
    Ответ написан
    Комментировать
  • А нужна ли переменная?

    @vacslav-dev
    web-developer
    В данном случае лучше дать осознанное имя параметру функции, и использовать его в теле без создания новой переменной.
    Отдельная переменная для длины строки тоже не имеет особого смысла.
    Во временные переменные стоит выносить результат, возвращаемый каким-либо методом, если он вызывается в коде несколько раз, и возвращаемое значение гарантированно не изменится.
    Например:
    var $node = $(element);
    var cntNode = $node.length;
    if(cntNode < 5){
        $node.remove();
    }


    Также, для удобочитаемости при обходе массивов циклом for, или в подобных случаях можно записывать во внешнюю переменную элемент на данной операции
    Например:
    for(var i = 0; i < obj.valArray.length; ++i){
        var currentItem = obj.valArray[i];
    }
    Ответ написан
    Комментировать