❶ js,如果判断鼠标在元素内
可以按以下思路步骤来实现:
1、声明一个变量(如el),用来存放鼠标所在的元素节点。
2、在body元素上增加一个鼠标事件监听
3、使用事件对象中的target属性,每当鼠标经过一个元素时,就把它赋值给el变量
任何时候,读取el变量的值即为鼠标当前所在的元素。
❷ js怎么监听鼠标是否有操作
<script type="text/javascript">
// 移动了就更新最近一次移动的时间。
document.onmousemove = function(){
window.lastMove = new Date().getTime();
};
window.lastMove = new Date().getTime();//最近一次移动时间
window.setInterval(function(){//每1秒钟检查一次。
var now = new Date().getTime();
// 如果超时了
if( now - lastMove > 指定时间 ){
// 自己写了撒。
}
}, 1000);
</script>
❸ js 监听鼠标事件怎么防止多次
可以第一触发后就移除鼠标事件函数,这样后面就不会再触发了。
❹ js中监听iframe点击事件
在js中,需要监听iframe的点击事件,但是因为浏览器的同源策略,是无法监听到的,只能另辟蹊径去解决它
注意,仅限于pc网站,意思就是必须要有鼠标移入移出iframe的操作
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Detect IFrame Clicks</title>
<script src="./jquery-3.4.1.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
var currentObj=Object
var isOverIFrame = false;
function processMouseOut(e) {
console.log('out iframe',e.target);
currentObj=e.target
isOverIFrame = false;
top.focus();
}
function processMouseOver(e) {
// log("IFrame mouse >> OVER << detected.");
console.log('in iframe',e.target);
currentObj=e.target
isOverIFrame = true;
}
function processIFrameClick(event) {
if(isOverIFrame) {
console.log('click iframe',event.target,currentObj);
}
}
function attachOnloadEvent(func, obj) {
if(typeof window.addEventListener != 'undefined') {
window.addEventListener('load', func, false);
} else if (typeof document.addEventListener != 'undefined') {
document.addEventListener('load', func, false);
} else if (typeof window.attachEvent != 'undefined') {
window.attachEvent('onload', func);
} else {
if (typeof window.onload == 'function') {
var oldonload = onload;
window.onload = function() {
oldonload();
func();
};
} else {
window.onload = func;
}
}
}
function init() {
var element = document.getElementsByTagName("iframe");
for (var i=0; i<element.length; i++) {
element[i].onmouseover = processMouseOver;
element[i].onmouseout = processMouseOut;
}
if (typeof window.attachEvent != 'undefined') {
top.attachEvent('onblur', processIFrameClick);
}
else if (typeof window.addEventListener != 'undefined') {
top.addEventListener('blur', processIFrameClick, false);
}
}
attachOnloadEvent(init);
});
</script>
</head>
<body>
<iframe src="https://www.hao123.com" width="80%" height="600px"></iframe>
<iframe src="https://www..com" width="80%" height="600px"></iframe>
</form>
</body>
</html>
复制上边整段html,打开console控制台,即可解决这个问题,亲测好用
❺ JS—事件类型(焦点事件、鼠标事件(部分))
【需要注意】虽然focus与blur不冒泡,但是却可以在捕获阶段侦听到它们。
只定义了div2即棕色的那个div的事件
【解释enter与leave】:当鼠标由粉移向棕色时,显示enter,鼠标由棕移向绿时,不显示leave与enter。当移出粉色时,显示leave。
【解释over与out】:当鼠标由粉移向棕色时,显示over,鼠标由棕移向绿时,显示out在显示over,鼠标由绿移向棕时,显示out载显示over。为什么会显示呢?是因为事件冒泡,由棕移向绿时会触发div3的over事件,但是div3并没有定义,所以向上冒泡到div2。所以会显示div2的over事件。
【总结】mouseenter与mouseleave是IE提出的事件,不冒泡。但是mouseover与mouseout事件则通过简单的e.stopPropagation()也无法避免冒泡的现象。
❻ 什么用javascript让一个对象同时监听鼠标单击和鼠标双击事件
<input name="test" id="test" type="button" onmouseup="c()" value="单双击测试"/>
注意不是onclick,是内onmouseup
var count = 0;
var timer ;
function c(){
count ++;
timer = window.setTimeout(function(){
if(count==1) alert("单击容");
else alert("双击");
window.clearTimeout(timer);
count=0;
},300)
}