Используя jQuery, как узнать, ввел ли селектор CSS “[type=text]”, исходно поддерживается браузером?

Прочитайте эти книги в порядке: Нежное Введение в Символьное Вычисление, язык Common LISP ANSI Paul Graham и затем переходит на Практический язык Common LISP. Или пропустите ACL и используйте его в качестве ссылки при прокладывании себе путь через PCL.

7
задан Keavon 7 December 2014 в 20:23
поделиться

6 ответов

В итоге я использовал условные комментарии в своем файле 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{}
0
ответ дан 7 December 2019 в 10:05
поделиться

Похоже, здесь есть что-то вроде того, о чем вы говорите:

http://www.w3avenue.com/2009/07/02/detect-support-for-css3-html5-with -modernizr /

2
ответ дан 7 December 2019 в 10:05
поделиться

Почему бы просто не иметь

input.workaround_classname{
  /* css styling goes here */
}

, а затем добавить имя_класса обхода во все текстовые поля в разметке.

Селекторы, которые вы могли бы использовать (я думаю, что второй, вероятно, самый простой для понимания того, что он выбирает для кого-то еще, читающего код)

$('input:text')
// or
$('input:text.workaround_classname')
// or
$('input.workaround_classname')

Тогда обнаружение не требуется, и вы не будете полагаться на JavaScript, чтобы добавить имя класса.

1
ответ дан 7 December 2019 в 10:05
поделиться

Почему бы не установить какой-нибудь бесполезный стиль CSS и проверить если стиль был применен. Добавляйте класс обходного пути только к элементам, к которым не применен этот стиль.

Единственная проблема в том, что я не могу придумать «бесполезный» стиль, который вы можете использовать: -)

3
ответ дан 7 December 2019 в 10:05
поделиться

Взгляните на http://www.geocities.com/seanmhall2003/css3/detect.html . Вы должны сделать это для каждого свойства.

0
ответ дан 7 December 2019 в 10:05
поделиться

Нет простого способа узнать, «поддерживает ли этот браузер селекторы CSS3». Все, что вы можете сделать, это определить браузер и версию браузера.

Modernizr не поможет вам, поскольку вы не можете определить, работает ли конкретный селектор CSS в файле .css. (Или вам нужно проверить, применяется ли определенное свойство CSS из вашего селектора CSS, и ЭТО действительно уродливо!)

НО! Здесь проще всего забыть о селекторах CSS 2.1, таких как [attr =] в файлах .css, поскольку они широко не поддерживаются. И если вам нужно писать для браузеров, которые их не поддерживают (например, Internet Explorer 6), вы просто не можете их использовать.

Итак, добавьте класс для всех. Ваш код будет легче понять, иначе вы всегда будете добавлять ненужный код JavaScript.

Я понимаю, что не отвечаю вам, но это плохо!

0
ответ дан 7 December 2019 в 10:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: