Форум на Kuban.ru (http://forums.kuban.ru/)
-   Веб-дизайн и программирование (http://forums.kuban.ru/f1030/)
-   -   Как отловить присвоение некорректного стиля через js? (http://forums.kuban.ru/f1030/kak_otlovit-_prisvoenie_nekorrektnogo_stilya_cherez_javascript-3286648.html)

ars_2007 09.11.2012 21:55

Как отловить присвоение некорректного стиля через js?
 
Допустим
document.getElementById('test').style.border='-10% barbed veryred';
как видим, ни один из заданных параметров не катит, опера выдает при присвоении ошибку, но поймать это через try не удалось.
Что делать?

Kuba 09.11.2012 22:50

[quote=Гавайские субтитры;27643002]document.getElementById('test').style.border='-10% barbed veryred';[/quote]

я думал таким методом уже никто не пользуется..

что значит "-10% barbed veryred", и что значит не катит ?? напиши "10px solid #ff0" и все покатит.. ошибка в атрибутах CSS или я не понимаю что ты хочешь присвоить элементу. отрицательную ширину, в процентах, очень красный цвет и не понятно что еще..

ars_2007 10.11.2012 00:03

1-Kuba >
имею в виду, если при присвоении стиля возникает ошибка, то можно ли ее отловить?

[quote=Kuba;27643642]я думал таким методом уже никто не пользуется..[/quote]
а каким пользуются все кроме меня? =)

brezhnev 10.11.2012 00:47

можно например так
$('#test').css('border','1px solid red');

ars_2007 10.11.2012 00:52

3-brezhnev >
да можно.
но мулька в том, что надо присвоить вот такое
$('#test').css('border','-1% nothing nocolor');
и надо выловить ошибку. =)

ars_2007 10.11.2012 00:53

+4
и еще и желательно указать, какой из трех параметров был задан неверно =))
(но это имхо уже фантастика)

brezhnev 10.11.2012 01:01

4-Гавайские субтитры >если отлавливать в процессе написания кода, то поставь редактор, уже писал какой, он это на ура делает, 5-Гавайские субтитры >аналогично

если на стороне клиента (браузера), то это не реально.

ars_2007 10.11.2012 01:09

[quote=brezhnev;27644469]если на стороне клиента (браузера), то это не реально.[/quote]
жаль, жаль.

[quote=brezhnev;27644469]если отлавливать в процессе написания кода, то поставь редактор[/quote]
да не. Надо чтобы проверять с пом. JS, правильно ли пользователь написал стиль и применяется ли он.

По идее же должно ловиться через try-catch, но не ловится.

brezhnev 10.11.2012 01:14

7-Гавайские субтитры >тогда только - разбор того что написал пользователь, далее сравнение с базой, далее рецензия

ars_2007 10.11.2012 01:22

8-brezhnev >
Ок. Будем думать.
За помощь спасибо.

vk 10.11.2012 01:43

Ну пусть браузер и проверяет
А мы посмотрим :)
$(function()** // чисто для удобства, т.к. присвоил id='body0' body-тагу

var style_val = '1px solid red'
document.getElementById('body0').style.border =style_val;
var testing_val = document.getElementById('body0').style.border;
alert( (style_val == testing_val) ); // будет true

var style_val = '1px solid red911'
document.getElementById('body0').style.border =style_val;
var testing_val = document.getElementById('body0').style.border;
alert( (style_val == testing_val) ); // будет false

**)
А если нужно проверить, что именно не правильно - разбиваете '1px solid red911' на "слова" по признаку пробелов (той-же регуляркой) и тестите поэлементно.
Все операции можно проводить на тестовом DOM-элементе(ах)

ars_2007 10.11.2012 01:52

10-vk >
ага. Т.е. ".style.border" это та же стринг (того не женский) и оно просто не присваивается, если неверно.
Ога. Кажись оно.
Хотя - все равно не перехватывает. =))
Но это такое. Пусть алерт выдает, та и все. Пока что хватит и этого. Спасибо за подсказку.

vk 10.11.2012 02:01

alert - чисто для примера.
try-catch не будет работать, т.к. за объект style javascript не отвечает.
Максимум, что можно узнать - есть ли соответствующий css селектор для данного браузера.
Что-то типа
var rez = ('border' in document.body.style)? true : false; // будет true
var rez = ('BigBorder' in document.body.style)? true : false; // будет false

ars_2007 10.11.2012 02:03

А, точно. Это css ругнулсо, а не js. =))


Текущее время: 09:51. Часовой пояс GMT +3.