Сообщение от trikadin
|
melky, надоест) А твои варианты?)
|
есть тут одна идея
псевдокод :
var значение = /*2px, 3345PX, 62in, 3%, 5* .. значение, короче/;
if( верное(значение) ){
результат = рега.exec(значение);
}
function верное( значение ){
// проверить посредством HTML (элемент)
}
код :
PS затестите, пожалуйста, в виндовых браузерах. у меня под рукой только FF и CH
function parseValue(){
var
dummy = document.createElement('b'),
reg = /(\d+)(%|\w*)/;
parseValue = function(value){
if(parseValue.isNormal(value)){
reg.exec(value);
return { value: RegExp.$1, dimension: RegExp.$2 };
}
};
parseValue.isNormal = function(value){
if(value === "0") {
return true; // "чистый" нуль все вертят, как хотят.
} else {
// IE FIX : он метает ошибку, если значение неверное.
try {
dummy.style.fontSize = value;
} catch(e) {
return false; // если неверное значение, IE породит ошибку (итог: значение неверное)
}
return dummy.style.fontSize === value;
}
};
return parseValue.apply(this, arguments);
}
var a="1px 2in 4% 0 0px 0% 65334em СТОЛpx ы%".split(' ');
var i = 0;
var parsed;
while(i in a){
parsed = parseValue(a[i]);
a[i] = a[i++]+" => "+ (parsed?parsed.value+":"+parsed.dimension:'ничего');
}
alert(a.join('\n'));