alert(this.tagName); if (obj.removeEventListener){ obj.removeEventListener("click",handler,false); } else { // ie8及以下,只支持事件冒泡 obj.detachEvent("onclick",handler); if (obj.addEventListener) { obj.addEventListener("click",handler,false); } else { // ie8及以下,只支持事件冒泡 obj.attachEvent("onclick",handler); 在前端编码中,经常会通过 addEventListener 来添加全局的事件监听,但是,这种全局的事件监听方法若使用不当,很容易造成严重的性能问题,下面我就来说一下如何正确的添加和 销毁 全局的事件监听。 1、element. addEventListener 的使用方法 这里我就不多啰嗦了,网上已经讲的很明白了,下面附上链接。 https://www.runoob.com/jsref/met-element- addeventlistener .html 2、window. addEventListener mounted() { window. addEventListener ("scroll",this.setHeadPosition);//this.setHeadPosition方法名 在DOM事件模型中,通过调用对象的 addEventListener ()方法注册事件,用法如下: element. addEventListener (String type, Function listener, boolean useCapture); type:注册事件的类型名。事件类型与事件属性不同,事件类型名没有on前缀。例如,对于事件属性为onclick来说,所对应的事件类型应... 子窗口向父窗口传值,比如点击按钮弹窗打开iframe ,这时候可以使用,防止跨域。我的问题比较简单,就是监听没有删除,导致多次 执行 。方法二:类似防抖节流的思想,每次点击将函数监听函数进行替换,只 执行 点击的最后 一次 ,我觉得还是这种方式最简单。 一次 ,多次点击,就会多次 执行 ,如果里面也有业务逻辑的话,比如发送请求,就会 执行 多次,所以是BUG。方案1:在打印后,清除监听。这个时候,由于我的监听,是放在按钮事件内,所以每点 一次 就会。演示代码,不分父子窗口,直接写一个页面内,仅供参考。的回调函数,必须是同一个。 //使用pageinit 事件来设置代码脚本在DOM元素加载完成后开始 执行 $(document).on("pagecreate","#pageone",function(){ // jQuery 事件... //点击事件 $("p").on("tap",function(){ $(this).hide(); //长按事件 点击不放(长按) 事件在点击并不放(大约 今天在做项目的过程中,组件中调用iframe时,由于在组件的created方法中写了监听,用于接收iframe发来的信息,但是在组件 销毁 的时候并没有去掉监听,导致组件创建几次,监听方法就会 执行 几次,特此记录 created() { window. addEventListener ('message', this.receiveMessage, false) beforeDestr... ES6 中使用 Class 语法糖,处理事件监听器的注册( addEventListener )和 销毁 (removeEventListener)时,其中遇到的、或者说需要注意的一些问题(如:注册事件无法 销毁 )及解决方案。