Архив за месяц: Август 2011

Очистка обработчиков в jQuery


Делал нагруженную ajax и jquery страницу и столкнулся с интересной проблемой. А обнаружилось случайно — просто заметил, что некоторые ajax-запросы посылаются несколько раз.

Немного понаблюдал за ситуацией и заметил что в таких случаях:

  • Некая часть страницы генерируется по ajax.
  • В этой странице тоже есть элементы, поведение которых программируется в jquery и может быть даже ajax.
  • Понятно, что скрипты этого поведения вставляются вместе с этой частью страницы
  • Всё в целом работает.

Но если потыкать мышками и повторить цикл вставки этой части страницы несколько раз то

  • Скрипт «накапливает» все методы обработки. По крайней мере каждый следующий раз каждый клик срабатывает два-три-итд раз
  • При этом сам HTML нормально вставлен один раз.

Куда копать? Какие слова гуглить? Как оказалось, нужно просто почитать матчасть!
Читать далее

Проблема с шириной блока в jCarousel Lite

Именно так выглядит у меня эта проблемаТут я писал про классную карусель jCarousel Lite. Классная-то классная, но иногда она неправильно определяет ширину блока. Точнее совсем не определяет, а ширину элемента списка (тег <li>) устанавливает в ноль.

Глюк настолько коварный, что во время разработки его обнаружить тяжело. Он сказывается когда изображения по какой-то причине загружаются долго. Для целенаправленной поимки такого глюка нужно регулярно очищать кеш браузера.

Единственный способ бороться с этой проблемой, который я нашёл, это явное указание у элементов списка, а именно у тега <li> каких-нибудь размеров. Фиксация размеров элемента может не так хороша, но всё же лучше чем иногда появляющийся ноль.

Примерно так:

  • Запись опубликована автором в рубрике Не по теме.
  • Kohana и «No input file specified»

    Работая с Kohana 3.0 без фронт-контроллера index.php внезапно столкнулся с ошибкой No input file specified.

    Причём главная страница работала нормально, а чуть в глубь — не находит. Причём на локалке работало нормально, а на хостинге у клиента — не хочет!

    Поскольку природу явления я не понял — юзал гугл. А гугл довольно быстро выдал мне, что у меня какие-то не такие настройки сервера на хостинге и в таком случае нужно колдовать с .htaccess

    Первое рабочее решение предлагало заменить

    RewriteRule .* index.php/$0 [PT]

    на

    RewriteRule ^(.*)$ index.php?$0 [L]

    Действительно всё работало нормально. С той разницей, что теперь всё URI стало попадать в index.php в качестве параметра GET. Это однозначно поломало всю пагинацию, ибо она отродясь юзала GET.

    Единственно рабочим решением которое позволило мне полностью забыть проблему — оказалось заменой той строки на

    RewriteRule .* index.php [L]

    Вот так вот. Просто и сердито. И работает.
    Почему работает — меня не спрашивайте, для меня это магия.
    Может кто-нибудь знающий даст комментарий?