Tom Adler’s blog

важное преимущество user js в опере над greasemonkey

в гризманки юзерскрипты выполняются только после того, как страница загружена целиком — со всеми фотографиями, флешками и прочим. Опера выполняет скрипты едва ли не до начала парсинга страницы. Это позволяет, например, сразу навешивать обработчики событий на документ, и ещё в процессе загрузки длинной страницы можно будет пользоваться новыми возможностями. Если же есть необходимость обрабатывать DOM, то тут очень помогает document.addEventListener('DOMContentLoaded', …), срабатывающий по готовности непосредственно DOM, а не тормозных картинок.

важно отметить, что тут подстерегает маленькая ловушка: опера считает файлы скриптов с расширением .user.js предназначенными для гризманки, и имитирует им работу в знакомом окружении — они выполняются только после загрузки страницы. Но достаточно просто изменить расширение на .js, и всё начинает работать как надо

хотя, конечно, у гризманки есть свои плюсы, вроде нормального интерфейса для управления скриптами или возможности делать кроссдоменные запросы аяксом

умный ctrl+w: закрыть таб или удалить слово?

в консоли убунты есть несколько удобных клавиатурных сокращений, и моё самое любимое из них — ctrl+w. Если я сделал в слове опечатку, то обычно я исправляю её именно набирая слово с нуля, а этот хоткей как раз удаляет слово перед курсором — очень удобно. Настолько удобно, что в других приложениях я довольно часто рефлекторно нажимаю те же две кнопки. К сожалению, очень часто программа воспринимает это как команду закрыть таб.

отказаться от закрытия таба по ctrl+w мне очень не хочется, потому что таким хоткеем я тоже пользуюсь часто. Идеальным вариантом было бы удаление слова при редактировании текста и закрытие таба в остальных ситуациях. Как обычно, на помощь приходит user javascript — Smart Ctrl+W: delete word or close tab. Логика внутри довольно простая: если клавиатурное событие ctrl+w пришло из текстового поля, отменить событие и удалить в этом поле слово перед курсором.

как обычно, постфактум я сообразил, что в опере добиться желаемого можно ещё проще: достаточно в настройках горячих клавиш (Preferences → Advanced → Shortcuts → Keyboard setup → Edit…) исправить для «w ctrl» значение с «Close page, 1» на «Backspace word | Close page, 1».

дисклеймеры: этот хоткей есть не только в убунте, не только в консоли, не во всякой консоли; скрипт не работает в опере, потому что в опере работают настройки

,

удобная работа с json в браузере

Сейчас многие API в интернете в качестве формата данных используют JSON. Спецификация требует указания для него типа application/json. Однако это не всегда удобно, потому что многие браузеры по умолчанию предлагают сохранить ответ сервера в файл, вместо того, чтобы показать его как простой текст. Всё-таки, браузеры предназначены для просмотра страниц, а не изучения внутренностей веб-сервисов.

Эту проблему можно очень легко решить, научив браузер поддержке application/json. Наилучшим образом это делается в Firefox: достаточно установить плагин JSONovich, и такие адреса не только начнут открываться прямо в браузере без лишних вопросов, но ещё и JSON будет удобно отформатирован и подсвечен. В опере штатными средствами пока что можно только показывать JSON в браузере: Preferences → Advanced → Downloads → Add… → MIME type "application/json" → Open with Opera. Впрочем, можно соорудить юзерскрипт по мотивам незабвенного XML Tree, но я не уверен, что займусь этим.

,

второе приближение к идеалу

недавний пост очень явно продемонстрировал, что даже у думающих людей качество восприятия картинок и текста отличается на порядок — сравните число комментов и «лайков». Более того, даже читать сам пост на эту тему взялись очень немногие, поэтому большинство комментариев было на тему «ах, как ужасно у вас всё отдизайнено». Окей, раз жизнь выдвигает такие требования, будем им следовать : )

поскольку мне всё-таки хочется продвигать directed identity в массы, я подготовил второй заход на идеальный openid, с учётом ошибок первого. Теперь у меня есть улучшенный прототип, с яваскриптом и блекджеком. Вернее, даже два прототипа. И картинки для привлечения визуалов!

первый вариант заглядывает немного дальше в будущее, скрывая не только второстепенные способы входа, но даже традиционную форму. Второй несколько ближе к нашим реалиям, но довольно тяжёл сам по себе, и поэтому в него не удалось вставить список альтернатив. Кроме того, менее актуальный для наших пенатов гугл поменялся местами с рамблером.

сейчас я надеюсь на комментарии, как ещё можно доработать интерфейс (не вёрстку и не скрипты), и в понедельник-вторник выложу этот новый вариант на хабр. Судя реакции во френдфиде, флейма на хабре будет выше крыши, так что поддержке понимающих людей я буду рад ; )

в конце концов, кто будет делать этот веб лучше, если не мы!

,

пустые элементы наносят ответный удар

верстальщики ещё помнят одну из проблем древнего эксплорера: если элемент не имеет никакого содержимого, у него то ли не рисуется фон, то ли вылезают какие-то другие косяки

но это эксплорер. А тут сюрприз пришёл откуда не ждали. Платформа Android — флагман гиковского мобилостроения. Используемый на нём движок WebKit — единственный открытый конкурент оперы в скорости развития. И вдруг нате вам: клики по пустым элементам не засчитываются! Снова здравствуй, пробел : )

впрочем, нет, мы пошли семантичным путём, и поставили туда настоящую кнопку ; )

хотя от других проблем, типа отсутствия клавиатурных событий, это не спасает : (