Прочитайте эти книги в порядке: Нежное Введение в Символьное Вычисление, язык Common LISP ANSI Paul Graham и затем переходит на Практический язык Common LISP. Или пропустите ACL и используйте его в качестве ссылки при прокладывании себе путь через PCL.
В итоге я использовал условные комментарии в своем файле javascript. Таким образом я мог бы обратиться к IE6 и применить класс CSS
$(function(){
//add css class to input[type=text] fields if the selector is not natively supported
// IE6 hack: Since some CSS selectors are not working, we simulate with class names.
/*@cc_on@if (@_jscript_version <= 5.6)
$('input[type=text],input[type=password],input[type=radio],input[type=checkbox]').
each(function() { $(this).addClass('type_' + this.type); });
@end@*/
});
Таким образом, я получил добавленные имена классов для всех полей формы:
.type_text{}
.type_radio{}
.type_checkbox{}
.type_password{}
Похоже, здесь есть что-то вроде того, о чем вы говорите:
http://www.w3avenue.com/2009/07/02/detect-support-for-css3-html5-with -modernizr /
Почему бы просто не иметь
input.workaround_classname{
/* css styling goes here */
}
, а затем добавить имя_класса обхода
во все текстовые поля в разметке.
Селекторы, которые вы могли бы использовать (я думаю, что второй, вероятно, самый простой для понимания того, что он выбирает для кого-то еще, читающего код)
$('input:text')
// or
$('input:text.workaround_classname')
// or
$('input.workaround_classname')
Тогда обнаружение не требуется, и вы не будете полагаться на JavaScript, чтобы добавить имя класса.
Почему бы не установить какой-нибудь бесполезный стиль CSS и проверить если стиль был применен. Добавляйте класс обходного пути только к элементам, к которым не применен этот стиль.
Единственная проблема в том, что я не могу придумать «бесполезный» стиль, который вы можете использовать: -)
Взгляните на http://www.geocities.com/seanmhall2003/css3/detect.html . Вы должны сделать это для каждого свойства.
Нет простого способа узнать, «поддерживает ли этот браузер селекторы CSS3». Все, что вы можете сделать, это определить браузер и версию браузера.
Modernizr не поможет вам, поскольку вы не можете определить, работает ли конкретный селектор CSS в файле .css. (Или вам нужно проверить, применяется ли определенное свойство CSS из вашего селектора CSS, и ЭТО действительно уродливо!)
НО! Здесь проще всего забыть о селекторах CSS 2.1, таких как [attr =] в файлах .css, поскольку они широко не поддерживаются. И если вам нужно писать для браузеров, которые их не поддерживают (например, Internet Explorer 6), вы просто не можете их использовать.
Итак, добавьте класс для всех. Ваш код будет легче понять, иначе вы всегда будете добавлять ненужный код JavaScript.
Я понимаю, что не отвечаю вам, но это плохо!