remove data attribute jquery cross-browser sniffing

data - jQuery.browser está en desuso, pero ¿cómo se usa.support?



jquery remove attribute (1)

En mi página web, tengo este CSS:

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

Lo cual funciona muy bien en todos los navegadores excepto en el viejo IE. Sé que puedo simplemente escribir algo de jQuery para agregar y eliminar una clase sobre el mouse over / out, pero preferiría no handicap (aunque sea ligeramente) todos los otros navegadores compatibles :hover correctamente, por lo que solo quiero aplicar este comportamiento JS para los navegadores que no son compatibles con la solución de CSS puro de forma nativa.

Por supuesto, todos sabemos que $.browser está en desuso, y todos sabemos que el rastreo de navegador es algo malo, y cualquier otra pregunta en SO tiene una serie de respuestas como "no se supone que debes verificar el navegador , busca la función ", y eso está muy bien en el mágico país de las hadas donde viven estas personas, pero el resto de nosotros necesitamos que nuestros sitios funcionen y se vean bien en IE6 y otros navegadores.

$.support parece a esto para IE6 y 7:

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

¿Cómo se supone que use estas propiedades para determinar si tr:hover funcionará?

Sí, sé que en este ejemplo, es bastante inocuo y probablemente podría salirse con la suya ya sea al no ofrecerle esa característica a los usuarios de IE o al simularla en todos los navegadores, pero ese no es el punto. ¿Cómo se supone que debes dejar de usar $.browser cuando $.support no está cerca de reemplazarlo?


Respuesta simple: en algunas circunstancias no puede, esta es una de esas circunstancias en las que podría argumentar que debe usar los medios necesarios para realizar el trabajo. Muchos plugins populares (datapickers y scripts modales) necesitan hacer esto (por ejemplo iframe shim) o la secuencia de comandos no funcionaría correctamente para un navegador específico (aunque antiguo).

Sin embargo, en lugar de husmear el userAgent como lo hace $ .browser, me molestaría detectar IE6 o usar CC.

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

También puede alimentar un archivo IE js general y luego ramificarlo dentro de él según la versión.