检测鼠标在浏览器内的移动。
问题:如何在浏览器中检测鼠标移动?
原因:该问题的出现是因为需要在浏览器中实时检测鼠标移动事件,并进行相应的操作。
解决方法:下面是一段代码,可以实现在浏览器中检测鼠标移动事件的功能。
var logOut = function() { (timeOut !== undefined)? window.clearTimeout(timeOut): null; isLoggedIn = false; document.removeEventListener("mousemove", setTime); alert("Oops Logged you out"); }; var setTime = function() { window.clearTimeout(timeOut); timeOut = window.setTimeout(logOut, maxOut); }; var timeOut, isLoggedIn = true, maxOut = 10000; if (isLoggedIn === true) { setTime(); document.addEventListener("mousemove", setTime); }
此外,如果你想在iframe中也能检测鼠标移动事件,可以添加以下代码:
document.getElementById("myFrame").addEventListener("mousemove", function(evt) { evt.preventDefault(); });
你可以在这里查看代码的演示效果:[codepen链接](http://codepen.io/ram333/pen/ygLNQG)
希望能帮到你!
问题出现的原因是因为在iframe标签上设置了onMouseOver事件,导致鼠标在iframe上移动时会触发over()函数,但是用户希望只在iframe内部检测鼠标移动。
解决方法是移除iframe标签上的onMouseOver事件,并在iframe内部添加鼠标移动事件的监听器。当鼠标在iframe内部移动时,触发相应的事件处理函数。
以下是修改后的代码:
function over() { console.log("over"); } var iframe = document.querySelector('iframe'); iframe.contentWindow.document.addEventListener('mousemove', function() { console.log("mousemove"); });
<iframe width="300" height="300" src="http://google.com" />
这样修改后的代码会在iframe内部检测鼠标移动事件,并在控制台上输出"mousemove"。
问题的原因是在一个iframe中无法检测鼠标移动事件。解决方法是将鼠标移动事件传递给父级窗口,前提是满足跨域策略。具体方法是在父级窗口中定义一个函数来监听鼠标移动事件,并在iframe的onmousemove事件中调用该函数来触发鼠标移动事件。最后,在父级窗口中添加一个监听器来处理鼠标移动事件,并将鼠标坐标输出到控制台和页面中。
完整代码如下:
// 在iframe中传递鼠标移动事件给父级窗口 function bubbleIframeMouseMove(iframe) { var existingOnMouseMove = iframe.contentWindow.onmousemove; iframe.contentWindow.onmousemove = function(e) { if (existingOnMouseMove) existingOnMouseMove(e); var evt = document.createEvent("MouseEvents"); var boundingClientRect = iframe.getBoundingClientRect(); evt.initMouseEvent( "mousemove", true, false, window, e.detail, e.screenX, e.screenY, e.clientX + boundingClientRect.left, e.clientY + boundingClientRect.top, e.ctrlKey, e.altKey, e.shiftKey, e.metaKey, e.button, null ); iframe.dispatchEvent(evt); }; } // 获取要监听鼠标移动事件的iframe元素 var myIframe = document.getElementById("iframe"); // 设置鼠标移动事件冒泡 bubbleIframeMouseMove(myIframe); // 监听鼠标停止事件 document.getElementById('iframe').addEventListener('mousestop', function(e) { console.log('鼠标坐标为:', e.detail.clientX, e.detail.clientY); document.getElementById("message").innerHTML = '鼠标坐标为:' + e.detail.clientX + ' ' + e.detail.clientY; });
HTML代码:
如果iframe的src属性指向外部网站,那么无法检测鼠标移动事件。