Browser Detection
Обнаружил что фрагмент кода из mootools выдает какой то странный результат для версии движка, может я не знаю каких нюансов, но все же хочется чтобы версия хоть как то коррелировала с версией браузера, кроме того писать каждый раз Browser.Engine.presto довольно длинно, хотелось бы чтобы было просто Browser.presto.
Mootools в отличие от jQuery и prototype определяет тип движка браузера по определенным особенностям объектной модели а не по navigator.userAgent, это неплохо, вот только версию движка таким образом можно определить очень приблизительно, поэтому версию будет логично определять по navigator.userAgent а сам движок по функционалу объектной модели.
Немного похозяйничав в коде получилось вот что:
var Browser = {
platform: (navigator.platform.match(/mac|win|linux/i) || ['other'])[0].toLowerCase(),
version: (navigator.userAgent.toLowerCase().match(/.+(?:rv|it|ra|ie|me)[\/: ]([\d.]+)/) || [-1,-1])[1]
};
if (window.opera) Browser.presto = true;
else if (window.ActiveXObject) Browser.trident = true;
else if (!navigator.taintEnabled) Browser.webkit = true;
else if (document.getBoxObjectFor != null) Browser.gecko = true;
Ваш браузер:
| Версия | |
| Платформа | |
| trident (IE) | |
| presto (Opera) | |
| webkit (Safary, Chrome) | |
| gecko (Firefox, Mozilla) | |
Текстовый редактор для Nokia 5800
Я уже писал, что у Nokia 5800 наблюдается некоторый дефицит офисных программ. Странно, но даже обычный текстовый редактор для мобильника найти не так то просто, хотя создать некое подобие notepad'a проще простого.
Немного поколдовав с Sun Java Wireless Toolkit, сделал небольшой текстовый редактор для своего мобильника который умеет читать, редактировать и сохранять текстовые UTF-8 файлы.
Отсюда можно скачать TextEditor.jar. Исходники редактора можно скачать здесь.
В принципе, программа должна запуститься на любом мобильнике с Java и файловой системой к коим относятся практически все Symbian и Windows Mobile устройства.
К сожалению, jar не подписан, поэтому при работе приложение выдает кучу дурацких предупреждений, как с этим справиться я пока не придумал, в крайнем случае придется покупать сертификат, а это довольно дорого
Может кто знает более дешевый способ? Он должен, должен быть это способ, его не может не быть.
UPD: Для установки - скачиваем TextEditor.jar, кладем на флешку телефона, предаварительно подключив телефон к компьютеру, можно сразу скачать jar через встроенный браузер телефона. Запускаем jar через встроенный файловый менеджер телефона. Соглашаемся со всеми варнингами - после установки в телефоне в списке приложений появится значёк запускающий текстовый редактор.
Скрипт для генерации снега
Сегодня один из заказчиков попросил поставить на сайт снежинки - да да старые добрые снежинки которые вот уже которые год падают на сайтах в новогоднюю ночь.
Сначало было откопали один из старых скриптов для создания эффекта падающих снежинок, долго его настраивали потом выкинули нафиг и за полчаса написали свой, с классами, минифицированная версия весит 6K - можно еще уменьшить, но я не особо старался удалить все неиспользуемые функции - это ведь только на новогодние праздники - потом уберем до следующего года.
Отсюда можно скачать наш скрипт для генерации снежинок. Если кликнуть на ссылку то можно посмотреть скрипт в действии. Скрипт очень простой, если захотите использовать нужно будет изменить путь к файлам со снежинками, ну и коничество и форму снежинок можно подобрать по вкусу.
Ограничение области видимости в JavaScript
Иногда в JavaScript нужно создать пару методов которые должны быть видны только изнутри определенного куска кода. Для этого достаточно внести эти методы внутрь анонимной функции и сразу ее выполнить:
(function(){ //наша анонимная функция
function func1(){ //первая функция видимость которой нужно ограничить
alert('!');
}
function func2(){ //вторая функция видимость которой нужно ограничить
func1();
}
func2();
//внутри блока func1 и func2 "видят" друг друга и могут быть вызваны!
})(); //выполнить
//при этом вне блока func1 и func2 оказываются невидны!
Этот принцип может быть также использован для создания приватных методов и свойств при программировании объектов.