问题

当对节点同时添加 blur事件 以及 click事件,触发 click事件 的时候程序报出这样的一个错误(Chrome浏览器):

Uncaught NotFoundError: Failed to execute ‘removeChild’ on ‘Node’: The node to be removed is no longer a child of this node. Perhaps it was moved in a ‘blur’ event handler?
Uncaught NotFoundError: An attempt was made to reference a Node in a context where it does not exist.

原因

这是因为 blur事件click事件 先触发,而javascript为单线程,同一时间只能执行处理一个事件,所以当 blur处理程序后,会有可能导致其后续 click事件 的执行出现问题。

例如:

input.addEventListener('blur', callBack, false);function callBack(e){let t = e.target.parentNode.parentNode;t.innerHTML = e.target.placeholder;
}document.getElementById("confirm").addEventListener('click', function(e){if (isNum(input.value)){// input.removeEventListener('blur', callBack, false); 没有这一句的话t.innerHTML = input.value + `<span class="edit-icon"><img src="img/edit.png" alt=""></span>`;modifySourceData(t);                          }});

本质上,当从DOM树中删除节点时,它也会触发一个blur事件(focusout也在事件之前)。若你的 blur事件 中对DOM树进行了操作,就会导致 click事件 的执行错误,出现文章开头的报错。

解决办法是: 在你进行操作之前,删除附加的事件监听器。

blur事件与click事件冲突的解决办法相关推荐

  1. 不同dom的blur事件和click事件发生冲突

    直接上测试代码 <!DOCTYPE html> <html lang="en"> <head><title>不同dom的blur事件 ...

  2. 苹果浏览器移动端click事件延迟300ms的原因以及解决办法

    这要追溯至 2007 年初.苹果公司在发布首款 iPhone 前夕,遇到一个问题 -- 当时的网站都是为大屏幕设备所设计的.于是苹果的工程师们做了一些约定,应对 iPhone 这种小屏幕浏览桌面端站点 ...

  3. 移动端touch事件和click事件的区别

    移动端touch事件和click事件的区别 1.touch事件 以下是四种touch事件 touchstart:     //手指放到屏幕上时触发 touchmove:      //手指在屏幕上滑动 ...

  4. ios 静态库冲突的解决办法

    参考:http://www.cnblogs.com/machao/p/5288460.html ios 静态库冲突的解决办法 最近在做一个 iOS 的 cocos2d-x 项目接入新浪微博 SDK 的 ...

  5. git rebase 的常见冲突及解决办法

    1. git cherry-pick与git rebase 进行两个独立分支的代码合并时有两个比较常用的命令,分别是git cherry-pick <commit-id>和git reba ...

  6. office2016和Visio2016安装冲突的解决办法(后附安装包链接)

    office2016和Visio2016安装冲突的解决办法 不管是先安装好office2016再安装Visio2016,还是先安装Visio2016再安装office2016,这两种方法在安装后者的时 ...

  7. Linux(Ubuntu)下WiFi网卡(intel ax201)驱动与Nvidia显卡驱动冲突的解决办法

    Linux(Ubuntu)下WiFi网卡(intel ax201)驱动与Nvidia显卡驱动冲突的解决办法 环境: 系统 Ubuntu 22.04 LTS 网卡ax201(微星b660m迫击炮wifi ...

  8. QQ2005Beta3与输入法组件冲突的解决办法(转)

    QQ2005Beta3与输入法组件冲突的解决办法(转) 关于输入法与QQ2005beta3冲突的问题,腾讯官方已经给出了解决建议,请看―― 尊敬的QQ用户: 大家好!首先感谢大家选用了QQ的最新版:Q ...

  9. IP地址与网络上的其他系统有冲突的解决办法:

    IP地址与网络上的其他系统有冲突的解决办法: 如果是用局域网,那么是局域网中有其他电脑的IP地址与你的电脑的IP地址相同, 如果是单机直接上网,那么需要检查自己所使用的设备中哪一个设备是冲突的原因,例 ...

最新文章

  1. Nutch插件开发及发布流程
  2. 记录node内存瓶颈分析
  3. sfm点云代码_VisualSFM使用方法与心得
  4. 玩转 Linux 之:磁盘分区、挂载知多少?
  5. 数据库连接 未将对象引用到实例
  6. Java调用虚拟键盘输入法_Android 点击屏幕空白处收起输入法软键盘(手动打开)...
  7. 栈和队列:2.队列(Queue)及其C语言实现
  8. SQL数据库层面操作(DDL)
  9. 织梦php 文章采集规则,织梦输入网址采集单个网页功能发布 不需要写采集规则一键采集...
  10. Android如何修改手机文件名称
  11. 鼠标离开 表格隐藏html,excel中滚动鼠标表格隐藏怎么取消
  12. html页面如何嵌套if标签,IF嵌套10个以上
  13. 都说IT行业有前景,请问凭什么?
  14. 高盛发布VR/AR研究报告
  15. java 求100天之后是周几
  16. FortiGate FGCP HA 配置文档
  17. CodeForces 1045A. Last chance(线段树+网络流SAP)
  18. 软件测试面试必看宝典(含面试题和笔试题)
  19. 小米12s ultra,索尼xperia1 iv,数码相机 拍照对比
  20. java队列实现入队push和出队pop

热门文章

  1. wr703n 官方固件140120版本刷openwrt
  2. 开放科研:数据科学场景下如何让研究更加开放?
  3. Linux Deepin:中国 Linux 桌面界的正能量
  4. python莫比乌斯_用python绘出一个莫比乌斯环
  5. UVa11549 Calculator Conundrum
  6. FPGA的UART信息回显
  7. 解决方案 因为计算机同名,无法发现工作组内其他计算机。
  8. 洛谷P1606 Lilypad Pond G
  9. GMail 波澜不惊
  10. HDU 5446 Unknown Treasure(Lucas定理+CRT)