2009-10-05 2 views
8

На моей веб-страницы, у меня есть этот CSS:jQuery.browser устарел, но как вы используете .support?

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 не подходит для его замены?

ответ

5

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

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

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

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

+1

+1, потому что это, вероятно, более надежно, чем нюхание агента пользователя, но оно не касается проблемы, которая заключается в том, что вы хотите, чтобы ваш код был передовым: если IE9 выходит и поддерживает функцию X, используя IE - только условный комментарий не будет работать. (Я знаю, что вы могли бы сделать '[if IE <9]' или что-то еще, но это все еще нюхает. – nickf

+0

Преимущество CCs в том, что их нельзя подделать или, по крайней мере, не повредить ваш реестр. Желаю jQuery не осуждал $ .browser. Должен был длинный список писем к мистеру Ресигу: «Вы делаете это неправильно!» – alex

 Смежные вопросы

  • Нет связанных вопросов^_^