media-queries - inputtypes - modernizr select
Cómo detectar si las consultas de medios están presentes usando Modernizr (2)
¡Eso es porque !!Modernizr.mq === true
en todo momento ... ¡estás probando lo que está mal!
Según los docs :
Si un navegador no admite consultas de medios (por ejemplo, oldIE), el mq () siempre devolverá false.
¡Pero esto: Modernizr.mq()
es false
! Tienes que probar realmente algo. Aquí, la palabra clave all
es justo lo que necesita (o only all
como sugiere Paul):
Modernizr.load({
test: Modernizr.mq(''only all''),
nope: ''polyfill.js''
});
Sin embargo, todas las compilaciones personalizadas de Modernizr 2.0.x con mq
incluyen respond.js , por lo que nunca necesita probar esto, excepto si desea cargar otro polyfill en su lugar. En ese caso, deberá deshabilitar / eliminar respond.js de su compilación.
Modernizr 2.5.x
Con la llegada de Modernizr 2.5.x, lo anterior ya no es cierto. El registro de cambios abreviado especifica que:
Ya no incluimos Respond.js en el constructor porque estaba creando conflictos en IE8. Si aún necesita Respond.js en su proyecto, simplemente inclúyalo manualmente.
Esto significa que Modernizr.mq(''only all'')
ahora puede devolver false
...
Estoy tratando de detectar si las consultas de medios están presentes utilizando Modernizr 2, y luego estoy cargando en respond.js si es apropiado.
He puesto esto en mi archivo script.js ...
Modernizr.load({
test: Modernizr.mq,
yep : '''',
nope: ''mylibs/respond.js''
});
¿Qué estoy haciendo mal? Estoy realmente sorprendido de que no haya un ejemplo de cómo hacer esto con Media Queries en el sitio de Modernizr. Aquí está la versión de Modernizr que estoy usando ...
Acabo de notar que se llega a esta conclusión en los comentarios de la respuesta de Félix : dejo mi respuesta aquí en caso de que ayude a otros visitantes que, como yo, no la obtuvieron.
No estoy seguro si esto sigue siendo un problema, pero si está cargando Modernizr v2.0.6 no debería necesitar ejecutar esta prueba. Solo con agregarlo a su página debería iniciarse automáticamente respond.js y sus consultas de medios deberían comenzar a funcionar.
¡También me he estado rascando la cabeza por esto ya que seguí obteniendo "true" en IE8! Mal explicado en el sitio de Modernizr, pero aludido en el http://html5boilerplate.com/ (primera instancia)