I want to display a dialog when a user mouses over a certain image. That part works. Unfortunately if the mouse even just passes over the corner of the image quickly it will display the dialog. I would like to have the dialog show only if the mouse is left over the image for one full second so as to avoid inadvertent pop ups.
I saw this question but it is for jQuery and I am using Prototype. I don't know enough jQuery to interpret that solution.
If someone could explain the logic or JavaScript functionality that will be required to cause a delayed firing of the mouseover event I would appreciate it.
The mouseover event is fired at an Element when a pointing device (such as a mouse or trackpad) is used to move the cursor onto the element or one of its child elements.
You can simply use the CSS :hover pseudo-class selector in combination with the jQuery mousemove() to check whether the mouse is over an element or not in jQuery.
The mouseover event occurs when a mouse pointer comes over an element, and mouseout – when it leaves.
You can't delay the firing of the event, but you can delay your handling of the event.
Here's a quick example without jQuery or Prototype that will make it easier to understand.
var delay = function (elem, callback) { var timeout = null; elem.onmouseover = function() { // Set timeout to be a timer which will invoke callback after 1s timeout = setTimeout(callback, 1000); }; elem.onmouseout = function() { // Clear any timers set to timeout clearTimeout(timeout); } }; delay(document.getElementById('someelem'), function() { alert("Fired"); });
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With