JohnDoe
Newbie-
Posts
6 -
Joined
-
Last visited
JohnDoe's Achievements
Explorer (1/14)
2
Reputation
-
Событие keydown на select'е всплывает через раз
JohnDoe replied to Great Rash's question in JavaScript
Бинго! -
По-моему большинство функций, которые раньше использовались в виде костылей, сейчас перенесены на нативный код... Зачем нам еще один костыль для того чтобы использовать костыли? Да, и таки да кэширование таки работает...
- 19 replies
-
- javascript
- jquery
-
(and 2 more)
Tagged with:
-
Событие keydown на select'е всплывает через раз
JohnDoe replied to Great Rash's question in JavaScript
Эм... А preventDefault не аргумент? Возможно я не понимаю сути вопроса... -
Во первых... value = sometext[0].match(/\bbackground: \w*;\b/);Рабочая. Просто браузеры в большинстве своем не просто распарсивают а раскладывают по полочкам... Свойство background содержит в себе 3, или более, свойств(background-color, background-position, background-repeat - это только для цвета). Следовательно и задавать вопросы нужно правильно... к примеру: sometext[0].match(/\bbackground-?\w*:\s*[^;]*;/gim)Насколько я понимаю, основная цель форума научить или научиться... Если все будет преподноситься на тарелочке, научиться чему либо невозможно. Основная задача в программировании - думать. Думать за компьютер(он ведь не понимает человека, и то что он хочет), и думать за пользователя который пользуется твоим продуктом. Поскольку меня понять сложно, я думаю стоит выложить более или менее адекватный(рабочий) пример скрипта: (function(){ var styleData = document.styleSheets, styleGreed, greedList, styles = [],i,j, sometext,selects,value; for(i=0;i<styleData.length;i++){ styleGreed = styleData[i]; greedList = styleGreed.rules || styleGreed.cssRules; for(j=0;j<greedList.length;j++){ //styles.push(greedList[j].cssText); if(greedList[j].cssText.search(/\bbackground/)>-1){ sometext = greedList[j].cssText.split('{'); selects = sometext.shift().split(','); value = sometext[0].match(/\bbackground-?\w*:\s*[^;]*;/gim); _(sometext[0].match(/\bbackground-?\w*:\s*[^;]*;/gim)); styles.push({s:selects,v:value}) } } } console.log('Done'); this.cssStyles = styles;}).call(this);В результате вы получите тот набор, на который, рассчитывал bio. Опять же говорю его переделать не проблема... Но и рассчитывать на то, что готовые решения будут даваться бесплатно - тоже не вариант.
-
Я не об этом... Правильно ли поставлен вопрос. Если брать в общем, то, для работы с CSS через JavaScript нет нужды парсить сам CSS. Большинство браузеров, и не которые IE, уже проделали всю нужную работу. Для работы со стилями необязательно распарсивать все стили. Это просто пример, в котором я собираю все стили в массив. В функции нет выборки, для этого достаточно добавить какой-нибудь банальный, к примеру: ...search(/\bbackground:/), чтобы отсеять лишнее, и потом, опять же, к примеру, вытянуть значение свойства и селектор каким нибудь: var sometext = ...cssText.split('{'),selects = sometext.shift().split(','),value = sometext[0].match(/\bbackground: \w*;\b/);Способов много и основная задача решена. Но после проверки содержания, кому как удобнее... можете хоть на стороне сервера распарсивать и обрабатывать
-
Возможно вам поможет, нечто, вроде вот этого: (function(){ var styleData = document.styleSheets, styleGreed, greedList, styles = [],i,j; for(i=0;i<styleData.length;i++){ styleGreed = styleData[i]; greedList = styleGreed.rules || styleGreed.cssRules; for(j=0;j<greedList.length;j++){ styles.push(greedList[j].cssText); } } this.cssStyles = styles;}).call(this);Далее вам придется перебрать массив в поимках нужной вам комбинации слов... Мне лично не попадались парсеры для CSS. Хотя я, лично не вижу смысла парсить css, видимо из-за этого они и не попадались. Я думаю вам наверное нужен не парсер, а скажем какое нибудь API, поскольку в результате вам наверное придется работать с тем самым CSS( ну там: менять параметры, и, все такое...). Подумайте...
-
По сути, функция - это метод объекта Function, который(объект), по сути, является методом объекта Object, который имеет свои методы, которые наследует Function, в доме который построил Джек. На этом не стоит заморачиваться, поскольку язык довольно сложный, и не до конца понятен даже, наверное, самим разработчикам Javascript Обычно, в языках программирования, используется классический синтаксис для создания функции: function Foo(){/*Здесь идет "блок кода" заключенный в фигурные скобки, в круглых скобках передаваемые параметры. слово function говорит о том что вы декларируете блок кода, который вам нужно будет исполнить позже...*/}Это всего лишь значит, что в Javascript, как и в большинстве ООП языков, функция - это всего лишь блок исполняемого кода, присвоенный какой нибудь переменной. Поэтому когда вы попробуете вывести имя функции в консоли, либо на экран, без исполнения(без круглых скобок), она вернет вам кусок кода как текст, а не результат выполнения функции.