jQuery.browser устарел, но как вы используете .support? - PullRequest
8 голосов
/ 06 октября 2009

На моей веб-странице у меня есть этот CSS:

tr:hover {
    background-color: #f0f;
}

, который хорошо работает во всех браузерах, кроме старого доброго IE. Я знаю, что могу просто написать несколько jQuery для добавления и удаления класса при наведении мыши, но я бы предпочел не ставить в тупик (хотя и немного) все другие браузеры, которые поддерживают :hover должным образом - поэтому я хочу Применяйте это поведение JS только для браузеров, которые изначально не поддерживают чистое решение CSS.

Конечно, мы все знаем, что $.browser устарело, и мы все знаем, что перехват браузера - плохая вещь, и на каждый другой вопрос в SO есть множество ответов в духе "ты не должен проверьте для браузера , проверьте для функции", и это все хорошо в волшебной сказочной стране, где живут эти люди, но остальным из нас нужно, чтобы наши сайты работали и хорошо смотрится в IE6 и других браузерах.

$.support выглядит так для IE6 & 7:

leadingWhitespace: false
tbody:             false
objectAll:         false
htmlSerialize:     false
style:             false
hrefNormalized:    false
opacity:           false
cssFloat:          false
scriptEval:        false
noCloneEvent:      false
boxModel:          true

Как же я должен использовать эти свойства, чтобы определить, будет ли tr:hover работать?

Да, я знаю, что в этом примере это довольно безобидно, и я мог бы, вероятно, сойти с рук, либо не предоставив пользователям IE эту функцию, либо симулировать ее во всех браузерах, но это не главное. Как вы можете перестать использовать $.browser, когда $.support не подходит к его замене?

1 Ответ

5 голосов
/ 06 октября 2009

Простой ответ - в некоторых случаях вы не можете, это один из тех случаев, когда я бы сказал, что вы должны использовать все средства, необходимые для выполнения работы. Многие популярные плагины (средства выбора даты и модальные скрипты) нуждаются в , чтобы сделать это (например, iframe shim), иначе скрипт не будет работать должным образом для определенного (хотя и старого) браузера.

Однако вместо того, чтобы прослушивать userAgent, как это делает $ .browser, я бы обнаружил объект для IE6 или использовал CC.

<!--[if IE 6]><script src="/js/ie6.js"></script><![endif]-->

Вы также можете подать общий файл IE js, а затем разветвляться внутри него в зависимости от версии.

...