browser detect, DOM Templates, create SWF — немного моих плюшек для jQuery
чуть подробнее описал на хабре http://vflash.habrahabr.ru/blog/98849/
код — http://vflash.ru/rr2jquery/src/rr2jquery.js пример — http://vflash.ru/rr2jquery/, http://vflash.ru/rr2jquery/demo_pager.html интересно мнение тех кто пишет на js. может кто возмет на вооружение тогда и документацию не лень будет написать. также приветствуются баги и объективная критика. |
Однобуквенные переменные… Дальше даже смотреть не стал.
|
Octane, и ?
|
Цитата:
|
ну смотрите если у вас браузер на основе gecko то переменная $.IE будет равна NaN. и любые условия ($.IE<8 || $.IE || $.IE>8 итд) вернут false, если бы $.IE был равен просто false то $.IE<8 выдал бы true. те переменную $.IE можно использовать не просто как флаг (true|false) но и использовать в выражениях.
вообше про этот способ писал самой первой записью в блогах на javascript.ru , года 2 или 3 назад |
выражение - расшифровка (моя)
$.IE = undefined - браузер IE версию которого определить не удалось. $.IE = NaN - браузер IE имеющий не числовую версию, например, alfa. $.IE = null - свойство является пустотой, оно не существует. Оно и не может существовать, потому как не существует объект который должен его содержать (т. е. IE). Логически правильный вариант именно null. Это, наверное, можно назвать семантикой в javascript-е. |
Riim, вы чегота не поняли. какая нафиг симантика.
что проше if($.browser.msie && $.browser.version<8) или if($.IE<8) ито $.browser.version это строка, ее еше нужно преобразовать. а в других браузерах $.browser.version вообше бесполезна. |
Цитата:
|
Цитата:
|
К тому же первая проверка как раз проще для понимания. Просто символов больше.
|
$.browser.msie это и IE6 и IE7 и IE8 и IE9 . каждый со своей прихотью. потому порой нужно знать и версию.
кроме IE есть такой браузер Opera и у него фокусов тоже хватает. с Gecko и WebKit както попроще и достаточно самого факта что это Gecko или WebKit, но тоже бывает полезно. Riim, вы ведь поняли когда if($.IE<8) будет true. |
Ну приведите конкретный пример, где бы понадобилось знание версии IE.
|
к примеру в IE<8 не работает white-space: pre-wrap; потому "\n" нужно заменить на <br> средством js
в IE<9 можно так createElement('<input>') в IE>8 уже как у всех |
Цитата:
Цитата:
|
Цитата:
Цитата:
Цитата:
vflash, а собственно зачем однобуквенные переменные? Цитата:
Цитата:
У меня, кстати, другая мысль возникла, по поводу шаблонизатора, что там интерфейс подстраивается под реализацию |
Octane, мне проше сделать проверку $.IE<8 чем проверять наличие каждого свойства style. вариантов проверки множество , мой короче и универсальный потому и удобнее. про createElement хз уже не помню почему так делаю (багов много всех не запомнишь), но тесты писать чтоб убедиться в вашей правоте как-то лень. вообше спасиб как нибуть всеже проверю.
x-yuri, одна буква потому что удобно, в коде видна логика а не названия переменных. a - это Array или argument, n - node, i - индекс итд. такие сокращения стандартны и не только я их использую. и потом короткие имена использую только во внутреннем коде, в интерфейсах использую человеко_понятные. По поводу шаблонизатора, интерфейс вылизывался больше года, подстраивался он под js потому как идея и была использовать js-синтаксис как шаблон, те да вы правы под реализацию. |
Цитата:
.foo { word-wrap: break-word; /* IE 5.5+ */ } |
e1f, word-wrap - это другое. переносы были но не отрабатывали '\n'.
|
vflash, word-wrap: break-word дает тот же эффект, что и white-space: pre-wrap
|
e1f, http://vflash.ru/work/pre_wrap.html - не совсем тот.
|
Цитата:
Цитата:
Цитата:
p.s. меру надо знать, имхо. Я тоже как-то так думал когда-то, правда до такого количества сокращений у меня не дошло |
x-yuri, ваше право писать так как вам удобно. я бы рад разбивать на мелкие функции но тесты говорят что это стоит ресурсов особенно в IE. А порой в этом нет необходимости если логика линейна, след. и разбивать нет смысла. В функции выделять нужно те части которые повторяются, или уже когда совсем прижмет.
p.s. вы придираетесь |
Цитата:
|
B~Vladi, a=2;b=4;c=a+b;
если говорить философски то я считаю что логика всегда линейна. |
Цитата:
Цитата:
|
Цитата:
Цитата:
А еще возникает мысль, что если смотреть на логику под определенным углом, она выстраивается в линию... Или что выбрав удачное определение линейной логики можно делать, что угодно :) что вообще такое линейная логика? Линейный алгоритм - алгоритм без циклов и ветвлений. И вот функции как раз могут скрыть нелинейность алгоритма, только нелинейность при чем... |
Цитата:
pre { white-space: -moz-pre-wrap; /* Mozilla, supported since 1999 */ white-space: -pre-wrap; /* Opera 4 - 6 */ white-space: -o-pre-wrap; /* Opera 7 */ white-space: pre-wrap; /* CSS3 - Text module (Candidate Recommendation) [url]http://www.w3.org/TR/css3-text/#white-space[/url] */ word-wrap: break-word; /* IE 5.5+ */ } Я о том, что для IE тоже можно реализовать нормальный prewrap с помощью css, без идиотских танцев с n2br. |
e1f, еше рас посмотрите на тест, специально для вас добавил ваше правило. сравните как блок выглядит в FF и как в IE6.
|
А теперь заверните вместо div'а в pre ;)
|
чуда не произошло
|
vflash, Вы уверены? В pre все отбражается именно так, как нужно -- с учетом форматирования. Чуду быть!
|
в итоге весь фокус был в "\r" и след возвращаясь к сути для IE<8 осталось необходимость замена "\n" уж не на <br> а на "\r\n".
еше все что Opera<9 уже стоит забыть. а уж про Mozilla которая была до Firefox тем более |
Цитата:
А что это за Mozilla такая, что до Firefox? Phoenix? Oo |
ну в общем-то, чем больше хочешь, тем больше нужно browser detection. Вопрос в том, стоит ли хотеть так много...
|
кроме browser detection в коде есть создание swf в отличии от swfobject это всего навсего одна маленькая функция. а также целый конструктор для шаблонов с возможностью писать в многострочном стиле, использовать уловия, переменные, комментарии и на выходе иметь не какойто там textplain а готовую ноду или обьект со всеми ссылками на нужные ноды.
--- Добавил и обновил букмарклет. можно как весь HTML(открытой страницы) преобразовать в js-код так и часть если указать hash url#id:ид_элемента Обновил код и добавил _.html() , выложил в SVN http://code.google.com/p/rr2jquery/ |
Часовой пояс GMT +3, время: 23:38. |