Обновился JQuery до 1.4.2
Судя по картинкам, производительность выросла в 2 раза. Добавили 2 новых метода: delegate и undelegate, которые заменяют более громоздкую конструкцию с each и live

Судя по картинкам, производительность выросла в 2 раза. Добавили 2 новых метода: delegate и undelegate, которые заменяют более громоздкую конструкцию с each и live

Для многих пользователей скорость загрузки страниц является основным фактором, привлекающим их в сайте. В тоже время для владельца ресурса это также важно: чем быстрее загрузилось, тем меньше нагрузки на сервер. Оптимизацию работы php скриптов и битрикса я пока рассматривать не буду, а попытаюсь выделить основные моменты влияющие на загрузку на стороне пользователя, в сторону которых хочу покопать в ближайшее время, а также описать кое-какие тонкости, которыми мы стали пользоваться.
А замечали, что иногда на сайтах попадается такая тема: висит checbox, а рядом текст, тыкаешь по тексту, а checkbox загорается. Дак вот эта полезная мелочь запросто реализуется на голом html!
Много-много лет мучались с этим. У битрикса есть CIBlockElement::GetList. Последним параметром этой функции можно определить массив возвращаемых полей, что значительно ускоряет работу скрипта, если совместно с этим потом использовать метод GetNext, при парсинге данных. Однако, если задать туда DETAIL_PAGE_URL, то его возвращало с незамененными парметрами. Заменить не сложно, но если в урле используется код раздела, то тогда нужно вызавать CIBlockSection и все скорости теряются.
В php есть функция serialize, которая преобразует массив, который в нее пихают в строку. Есть функия unserialize, которая делает обратно. Удобно юзать, если надо сохранить массив в cookies или в базу данных.
А в javascript такого нету. Зато можно так написать, самостоятельно…
Для некоторых целей, в том числе и для нашего редактора, потребовалось загружать изображения. Тут же выяснилось, что на input type=file стили не навесить. То есть вот у нас красивый такой дизаин, а в середине аццкая кнопка стандарта os пользователя, причем он по ней ткнет, а файл нигде не появится, пока форму не отправишь.
На просторах сети было найдено несколько вариантов как сделать отправку картинки без перезагрузки страницы. На хабре есть стаья, где пытаются это делать через iframe. Еще есть плагин, который на flash-е (флешовая кнопка открывает окно загрузки). Но первый - не вглядывался, но к iframe-у стал относиться отрицательно. У второго - кнопку это дурацкую без правки flash-а не поменять, да и весит ~50кб. Но вот вчера, наконец, нашли:
Пишем уже хрен знает сколько времени редактор, перепробовали все, в том числе и tinyMCE, но под наши нужды он не подошел, а если и подошел, то гемора с одинаковым отображением наших “модернизаций” очень и очень много. Посему перешли на написание блочного, без использования ифреймов и прочей мути. Сурово и просто: textarea, div и jquery
Поэтому сегодня расскажу о про авторастягивание в textarea. [Читать полностью...]
Во-первых в них встроен jquery, то есть пользователи скажут спасибо, если у вас на сайте юзается свой jquery, а на странице с картами подгрузится еще один. Он там устаревший (судя по мануалам 1.3.2, а на данный момент на всех проектах мы уже поставили 1.4.1). Спасибо, что хотя бы отрубили ему пространство имен $ и сделали YMaps.jQuery - войны между версиями не начинается. Хотя с другой стороны, зачем это надо было? Уж если пользоваться, то сдергивать бы на весь сайт этот jquery от яндекса и пользовать на здоровье… В общем обратите внимание, а то пользователи замучаются.
Во-вторых сами функции работы с картой. Есть addOverlay, есть removeOverlay, есть removeAllOverlay, но где же getOverlay, который если не объект, то ссылку на объект возвращал? Ведь например, если я показ оверлеев привязываю к каким-нить чекбоксам через яндексовский jquery, то было бы вполне разумно иметь возможность получить нужный оверлей и делать с ним, что захочется.
Не понимаю
UPD: да что с них взять - даже оффициальные примеры яндекс-карт не работают ни в одном ie: http://api.yandex.ru/maps/jsapi/examples/mapcontrolscustomizing.html
Для тех кто не знает, что такое json скажу кратко: просто яваскрипт-массив выводимый ввиде текста при динамическом запросе (ajax), получая который, ваша javascript-штука пытается его eval, то бишь запустить на выполнение. Короче нужно для того же, для чего xml передавить, но весит иногда сильно меньше. Более подробно можно прочесть на википедии.
Был элемент select, при его изменении должно было происходить событие live, которое что-то там делало.
Селектор прописывался через id элемента select, подэлемент option:
$(”#tovartip option”).live(’click’,function(){});
То есть по сути вылавливали клик по элементу оптион данного селекта. Дак вот в сафари селектор по #id option не работает. У меня лично заработало так:
$(”select[name='selectname']“).live(’change’,function(){});
К счастью в других браузерах это тоже вроде нормально сработало.
Как вариант можно было бы костыль сделать: обычно собитие change по селектору работающему в safari, внутри него проверка браузера (чтобы во всех остальных по 2 раза не выполнялось), и если это safari, то вызов начального события live через toggle