Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 19.05.2012, 18:28
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

удобный парсинг фильтров.
есть CSSStyleDeclaration, и оттуда как-то надо взять значения для опр. фильтра.
пример :
parse(style, "progid:DXImageTransform.Mircosoft.Aplha");
// то же самое, что и object.filters["progid..."], т.е. объект.

собственно, вопросы
  1. через CSSStyleDeclaration можно ли получить доступ к filters? object.style.filter - строка, object.filters - полумассив
  2. как правильно парсить фильтры из object.style.filters?
я не могу получить элемент, т.к. оперирую именно со свойством style.

PS если я сам себе отвечу, то эта тема будет считаться как решение проблемы

Последний раз редактировалось melky, 19.05.2012 в 18:38.
Ответить с цитированием
  #2 (permalink)  
Старый 19.05.2012, 19:07
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

извините за даблпост.

спарсить фильтры из строки, то есть получить значения фильтров из свойства style, можно таким образом:

var filter = "progid:DXImageTransform.Microsoft.Alpha(opacity=50) "+
    "progid:DXImageTransform.Microsoft.Blur(pixelradius=2)  "+
    "progid:DXImageTransform.Microsoft.Matrix(M11=1, M12=0, M21=0, M22=1, sizingMethod='auto expand')";

var filterReg = /([\w.]+)\(([^)]+)/g, matched;
var filters = {}, parsed, curr, i, splitted;

while(matched = filterReg.exec(filter) ){ 
    curr = filters[matched[1]] = {};
    parsed = matched[2].split(/,\s?/);
    for(i = 0; i in parsed; i += 1){
        splitted = parsed[i].split("=");
        curr[ splitted[0] ] = splitted[1];
    }
}

console.dir(filters);

как-то так. мне важно было только спарсить матрицу, поэтому код для моей цели должен быть таким, ещё проще:
var filter = "progid:DXImageTransform.Microsoft.Alpha(opacity=50) "+
    "progid:DXImageTransform.Microsoft.Blur(pixelradius=2)  "+
    "progid:DXImageTransform.Microsoft.Matrix(M11=1, M12=0, M21=0, M22=1, sizingMethod='auto expand')";

alert( filter.match(/M\d{2}=[\d.]+/g).join("\n") );

Последний раз редактировалось melky, 19.05.2012 в 19:26.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Парсинг даты Allan Stark Общие вопросы Javascript 4 30.01.2014 18:57
Парсинг страницы с авторизацией aspx karmis Серверные языки и технологии 0 21.02.2012 18:28
Парсинг времени Falcon Общие вопросы Javascript 2 20.09.2010 17:23
custom Парсинг HTML нужен Increazon Общие вопросы Javascript 8 15.09.2010 13:23
Парсинг XML dabutch Общие вопросы Javascript 17 09.04.2009 09:48