• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com专业计算机教程网站
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure
您的位置:首页 > 网页设计 >html5 > onclick = xxx这种赋值写法绑定事件的原理是什么?

onclick = xxx这种赋值写法绑定事件的原理是什么?

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2018-12-03

本文主要包含等相关知识,匿名希望在学习及工作中可以帮助到您

回复内容:

合理猜测:给onclick赋值的内部操作时,remove掉原来的,add上新的。 路过
不同浏览器不一定是这个结果
底层代码肯定不是JS

仅趴了机器上几年前最老的blink代码看了下
EventListenerMap 里靠的是 EventListenerVector
这玩意就是个 Vector
typedef Vector
这么搞的

onclick setting 时候是 vector->find 后没有对应 handle
再 append 进去的
再次 setting 时是 find 有
就先 remove 老的再 append
没见 Vector 有用到(定义过) replace 方法

所以(在这么实现的浏览器上)才有这种现象

最终还是轮子哥猜对了。 这个ff和chrome/safari行为是不一致的(edge未测试)。按照现在的规范(https://html.spec.whatwg.org/multipage/webappapis.html#event-handler-attributes:event-handlers-12),blink/webkit的行为是错误的。



嗯,恭喜轮子猜对了一个错误的实现。 js就是猜的人多,而不去看源码或规范,所以有一堆误导大众的文章 订阅者模式,内部应该是通过一个列表来维护事件响应的,所以每次为OnClick赋值的时候会替换原来的事件委托。 你这是毛病得改,对未在需求文档中定义的行为不要妄加猜测,因为说不定哪天就改了呢。

这个可能是listener和onclick一个是列表,一个是属性,属性赋值自然覆盖。先执行属性,再执行监听器列表。

当然也可以有其它和实现,那表现就不一样了,你依赖这种调用顺序是错误的,我完全可以所有listener并发,符合需求,却让你的程序出bug,你这就是作死,不要学习那些上古遗留的糟粕 属性,setter方法,去掉旧的,加上新的……你懂了吧,我猜的 跟所谓的主线程队列里面加入子线程是不是一个道理(疑惑 轮子哥猜中了。就是队列,出了重新进,就从队尾到队头了

您可能想查找下面的文章:

相关文章

  • 2018-12-03使用css3 属性如何丰富图片样式(圆角 阴影 渐变)_html5教程技巧
  • 2018-12-03做一个表白用的静态网页,有什么好的创意?
  • 2018-12-03html5中video标签无法播放mp4问题的解决办法
  • 2018-12-03详解HTML5中的WebSocket及实例代码
  • 2018-12-03jquery 新建的元素事件绑定问题
  • 2018-12-03SVG基础|SVG PATH 元素
  • 2018-12-03使用HTML5中的localStorage实现记住密码功能
  • 2017-08-06HTML5 Canvas绘制圆点虚线实例
  • 2018-12-03详细介绍HTML5中的新事件
  • 2018-12-03HTML5的文档结构

文章分类

  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure

最近更新的内容

    • html5七大优势“逼宫”APP
    • 详解HTML5预测取代本地App将成为可能
    • H5手机端页面缩放
    • HTML5中canvas元素如何绘制图形
    • HTML5 贪吃蛇游戏实现思路及源代码
    • html5 Canvas画图教程(5)—canvas里画曲线之arc方法
    • 你不知道的5个HTML5新功能
    • 零基础的人如何在一个月内做出令人惊讶的网站?
    • CSS transform中rotate能不能实现以对角线为轴进行旋转?
    • H5中History模式的使用详解

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有