over onmouse eventos ejemplo div javascript mobile browser browser-feature-detection

javascript - eventos - onmouseout



¿Cómo puedo determinar de manera confiable si un navegador admite eventos de mouse over? (4)

Es posible que desee pensar en usar Modernizr , podría hacer algo como lo siguiente utilizando el método Modernizer.hasEvent() ( docs ):

Modernizr.hasEvent("mouseover", document);

En el pasado, el mejor método para verificar la presencia de un mouse era buscar compatibilidad con eventos táctiles . Sin embargo, Chrome de escritorio ahora admite eventos táctiles, lo que hace que esta prueba falle.

¿Hay alguna manera de probar directamente la compatibilidad con eventos de mouseover, en lugar de inferirla en función de la presencia de eventos táctiles?

Resolución: este es el código que funcionó, basado en la respuesta de AshleysBrain.

jQuery(function() { // Has mouse jQuery("body").one("mousemove", function(e) { attachMouseEvents(); }); // Has touchscreen jQuery("body").one("touchstart", function(e) { // Unbind the mouse detector, as this will fire on some touch devices. Touchstart should always fire first. jQuery("body").unbind("mousemove"); attachTouchEvents(); }); });


Si los sitios web pueden detectar que está utilizando un navegador móvil con tanta precisión como ellos, ¿por qué no puede utilizar la misma técnica para inferir que no tienen soporte para mouseover?


He intentado esto y es trabajo.

<html> <head> <script type="text/javascript"> function isEventSupported(eventName) { var el = document.createElement("body"[eventName] || "div"); var isSupported = "on" + eventName.toLowerCase() in el || top.Event && typeof top.Event == "object" && eventName.toUpperCase() in top.Event; el = null; return isSupported; } </script> </head> <body onload="alert(isEventSupported(''mouseover''));">TEST mouseover event</body> </html>

Tomé la función isEventSupported de http://www.strictly-software.com/eventsupport.htm


Podría hacer lo contrario de la solución para detectar el teclado o la entrada táctil . Simplemente espere un evento táctil real o un evento de movimiento del mouse y decida en función de eso. Si comprueba la presencia de un controlador de eventos, el navegador puede indicar que tiene el evento, incluso si no se está ejecutando en el hardware que lo soporta, por lo que lo único confiable es esperar y ver qué eventos reales se activan.