当我在 html 页面里写入 js ,绑定 load 事件的时候:
window.addEventListener("load", test, false);
function test(){
console.log("test");
}
这个时候是可以正常调用 test 函数的。
但是当我结合 requirejs 把事件监听放在外部引入的 js 文件里,就没办法正常监听了,求解决办法及原因
回复:
引入你这个 js 之前页面就已经 load 完毕了,解决办法就是先判断页面加载状态,加载完成直接执行,没加载完毕再监听加载完毕事件。这种简单的问题可以看下 jquery 是怎么处理的。
如何通过js实现添加事件监听和移除事件监听
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <style> .detail_info { position: absolute; display: none; } </style> </head> <body> <input type ="button" value="测试增加/移除监听" id="btn_bind"/> <div style="position: relative;" id="box_content"> <input type="text" /> <input type="text" /> <!--浮动的详细信息--> <div id="box_detail"> 浮动提示信息 </div> </div> <script type="text/javascript"> (function () { document.getElementById("btn_bind").addEventListener("click", function () { if(this.bindStatue) { removeEvent(); } else { bindEvent(); } this.bindStatue = !this.bindStatue; }); function removeEvent() { var inputs = document.querySelectorAll(".text"); for(var i = 0, length = inputs.length; i < length; i++) { inputs[i].removeEventListener("mousemove", showDetail); inputs[i].removeEventListener("mouseout", hideDetail); } } function bindEvent() { var inputs = document.querySelectorAll(".text"); for(var i = 0, length = inputs.length; i < length; i++) { inputs[i].addEventListener("mousemove", showDetail); inputs[i].addEventListener("mouseout", hideDetail); } } function showDetail(e) { var e = e || window.event, box = document.getElementById("box_detail"), content = document.getElementById("box_content"); box.style.display = "block"; box.style.top = e.clientY - content.offsetTop + "px"; box.style.left = e.clientX - content.offsetLeft + "px"; } function hideDetail() { document.getElementById("box_detail").style.display = "none"; } })(); </script> </body> </html>
以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索实例
, 函数
, 事件
this
js移除监听事件、移除监听事件、extjs移除事件监听、ios移除监听事件、android 移除监听事件,以便于您获取更多的相关知识。
时间: 2024-10-29 06:44:32