<rmcreative>

RSS

Все заметки с тегом «JavaScript»

  1. console.log и IE

    4 марта 2011

    В очередной раз забывшись отправил на сервер

    console.log("something happened");

    Всё хорошо, но в IE этого объекта нет и браузер будет ругаться. Можно проверить объект и метод на undefined, а можно подавить ошибки короче и надёжнее:

    try { console.log("something happened"); } catch (e) {}
    12 комментариев
  2. jQuery 1.5

    1 февраля 2011

    Вышла новая стабильная версия jQuery.

    • 83 исправления, 460 закрытых тикетов.
    • Проверено 4437 тестами в Safari, Opera, IE, Firefox и Chrome.
    • jQuery.ajax теперь возвращает объект jXHR, благодаря чему стало возможным, например, остановить запрос JSONP.
    • Отложенные объекты:
    var jxhr = $.ajax({ url: "example.php" })
        .success(function() { alert("success"); })
        .error(function() { alert("error"); })
        .complete(function() { alert("complete"); });
    6 комментариев
  3. Что и сколько раз алёртнется?

    21 декабря 2010

    var foo = 'bar';
    (function func(){
      alert(foo);
      var foo = 'baz';
      alert(foo);
    })()
    alert(foo);
    21 комментарий
  4. Свой JSP-тег для подключения JavaScript

    9 декабря 2010

    В процессе выноса часто используемых кусков кода в теги возникло неудобство, связанное с подключением требуемого для них JavaScript. Необходимо было подключать его один раз, сколько бы раз тег не использовался.

    По-быстрому возникло вот такое решение:

    <%--
    Allows to include each unique JavaScript file only once
    even if this tag is called multiple times.
    --%>
    <%@ attribute name="src" required="true" %>
    <% if(null==request.getAttribute("asset.js.".concat(src))){ %>    
        <script type="text/javascript" src="${src}"></script>
        <% request.setAttribute("asset.js.".concat(src), true);%>
    <% } %>
    

    Используется, соответственно, как-то так:

    <asset:js src="/js/jquery.js" />
    Комментировать
  5. Processing.js 1.0

    20 ноября 2010

    Вышла версия 1.0 Processing.js — JavaScript-порта языка Processing, созданного для генерации изображений, визуализаций и всякого интерактива. С выходом 1.0, JavaScript-версия почти догнала своего старшего брата по числу поддерживаемых фич.

    На что способна библиотека показано в разделе демонстраций.

    Забрать библиотеку можно с официального сайта. Там же доступно довольно полное руководство на английском.

    Комментировать
  6. jQuery router

    12 ноября 2010

    Маршрутизация URL очень актуальна не только на стороне сервера, но и, в последнее время, на стороне клиента. И, если её сделать правильно, пользоваться очень удобно.

    Существует несколько решений данной проблемы, в том числе и популярный jQuery BBQ. У всех этих решений есть минус — все они достаточно низкоуровневые.

    Вчера Василий Михайловский из студии D1.ru показал свой вариант роутера. Отличается от остальных он следующим:

    • Высокоуровневый API.
    • Динамический роутинг на регулярных выражениях.
    • Код покрыт тестами.

    Если вы собираетесь делать проект с асинхронной навигацией — стоит присмотреться.

    10 комментариев
  7. Dracula Graph Library

    19 октября 2010

    Интересная библиотека с занятным названием, основанная на Raphaël, для построения интерактивных графов. Имеет довольно приятный API:

    var g = new Graph();
     
    g.addEdge("strawberry", "cherry");
    g.addEdge("strawberry", "apple");
    g.addEdge("strawberry", "tomato");
     
    g.addEdge("tomato", "apple");
    g.addEdge("tomato", "kiwi");
     
    g.addEdge("cherry", "apple");
    g.addEdge("cherry", "kiwi");
     
    var layouter = new Graph.Layout.Spring(g);
    layouter.layout();
     
    var renderer = new Graph.Renderer.Raphael('canvas', g, 400, 300);
    renderer.draw();
    4 комментария
  8. jQuery 1.4.3

    16 октября 2010

    Выпущен финал jQuery 1.4.3. Размер, по сравнению с предыдущей версией, немного увеличился. Но не просто так.

    Перечислю тут самые значимые (по крайней мере для меня) изменения.

    • Стало возможно писать свои расширения CSS. Например, rotate.
    • Разделили .style() и .css(), что позволило ускорить работу .css().
    • metadata помещён в ядро, теперь можно обращаться к HTML5-атрибутам без префиксов:
    <div data-role="page" data-hidden="true" data-options='{"name":"John"}'></div>
    $("div").data("role") === "page";
    $("div").data("hidden") === true;
    $("div").data("options").name === "John";
    • .data при использовании не с DOM-элементами теперь пишет в сам элемент.
    • Серьёзно увеличена скорость .closest(), .filter(), .is() и .find().
    • Можно использовать .bind("click", false) и .unbind("click", false) для реализации обработчиков, которые просто возвращают false.

    • Официальный анонс

    • Обновляемся
    1 комментарий
  9. Предотвратить действие ссылки по умолчанию

    8 октября 2010

    Иногда приходится использовать ссылки без href или с якорями, поверх которых уже навешивается JavaScript-обработчик. Самыми распространёнными способами являются следующие:

    <a href="javascript:void(0)">Я не сработаю</a>

    Ужас в чистом виде образца начала 2000-х, если не более ранних, лет. Единственный плюс в том, что работать будет даже в очень древних браузерах.

    <a id="my_link" href="#my_anchor">Я не сработаю</a>
    <script>
      $(document).ready(function(){
        $("#my_link").click(function(){
          //...
          return false;
        });
      });
    </script>

    Не только предотвратит событие по умолчанию, но и, также, предотвратит всплытие события. Так что данный способ не подходит, если событие всё-таки должно всплыть.

    <a id="my_link" href="#my_anchor">Я не сработаю</a>
    <script>
      $(document).ready(function(){
        $("#my_link").click(function(e){
          e.preventDefault();
          //...      
        });
      });
    </script>

    Предотвратит только событие по умолчанию. Тут, кстати, частенько забывают про IE6, который про preventDefault ничего не знает и хочет вместо него e.returnValue = false. Хотя, в jQuery это всё скрыто.

    Для получения аналога return false нужно добавить e.stopPropagation() и, соответственно, e.cancelBubble = true для любимого IE.

    т.е. return false = e.stopPropagation + e.preventDefault.

    7 комментариев
  10. Мастер-классы Ильи Кантора по JavaScript

    1 сентября 2010

    Начиная с конца сентября и заканчивая серединой ноября Илья Кантор, автор javascript.ru и algolist.manual.ru, а также бывший участник основной команды фреймворка dojo toolkit, проведёт мастер-классы по темам:

    • Профессиональное javascript-программирование.

    • Сложный AJAX и COMET: тонкости Web 2.0.

    • Мастер-класс по клиентской оптимизации.

    • Секреты jQuery.

    Расписание:

    • 24-25 сентября, Ярославль (удобно москвичам, несколько часов езды).

    • 3-4 октября, Новосибирск.

    • 9-10 октября, Казань.

    • 16-17 октября, Минск.

    • 23-24 октября, Днепропетровск.

    • 30-31 октября, Одесса.

    • 13-14 ноября, Самара.

    Участие платное, но стоимость вполне доступная. Сейчас это 1300 рублей или 350 гривен за мастер-класс.

    Рекомендую как тем, кто хочет поднять свой уровень JavaScript, так и профессионалам.

    2 комментария