专栏电商日志财经减肥爱情
投稿投诉
爱情常识
搭配分娩
减肥两性
孕期塑形
财经教案
论文美文
日志体育
养生学堂
电商科学
头戴业界
专栏星座
用品音乐

怎么创建JavaScript自定义事件

  头条创作挑战赛
  banner
  本文同步本人掘金平台的原创翻译:https:juejin。cnpost7091657693362356255
  你肯定处理过很多的事件监听,比如点击事件或者表单提交。事件监听对许多用例来说很有帮助,但是有时我们需要创建自己的自定义事件来处理复杂的交互。在这片短文中,我将告诉你有关创建自定义事件,侦听自定义事件以及创建双击自定义事件所要了解的内容。怎么创建自定义事件
  创建自定义事件听起来很困难,但是只需要下面简单的一行代码即可。constmyEventnewEvent(myCustomEvent)复制代码
  你可以通过事件构造函数创建一个新的Event对象。在最基本的形式中,你只需要将一个字符串传递给构造函数,这个字符串就是你定义的事件名称。为了监听这个事件,你可以将该事件监听器添加到你要监听的元素上,如下:document。addEventListener(myCustomEvent,e{console。log(e)})复制代码
  最后一步,你需要做的事,触发创建并正在监听的事件。document。dispatchEvent(myEvent)复制代码
  这就需呀dispatchEvent函数了。每个元素都有这个方法,你要做的就是将你创建的对象传递给它。
  如果我们将上面讲的组合在一起,我们就得到了一个基本的事件,这个事件在我们的document元素触发,相关的事件内容会被打印出来。
  图中是这个事件对象的最基本形式。它包含大量信息,最重要的部分我这里突出显示了。
  isTrusted属性仅指该事件是由用户交互触发,还是由自定义JavaScript代码触发的。例如,当用户单击按钮时,事件将isTrusted设置为true,而我们自定义的事件会将其设置为false,因为该事件是由JavaScript触发的。
  target指调用dispatchEvent函数的元素。
  type指事件的名称。事件定制
  你可能注意到了,上面的详情中有属性bubbles,cancelable和composed属性。这些实际上,在我们创建自定义事件时可以配置的选项。constmyEventnewEvent(myCustomEvent,{bubbles:true,cancelable:true,composed:true})复制代码冒泡bubbles
  当事件触发后,bubbles属性决定这个事件是否可以通过HTML进行冒泡。这个值默认为false,这意味着不可以进行冒泡行为,如果你想事件调用父HTML元素,你可以将其设置为true。constbubbleEventnewEvent(bubbleEvent,{bubbles:true})constdefaultEventnewEvent(defaultEvent,{bubbles:false})document。addEventListener(bubbleEvent,(){Thiswillgetcalledsincetheeventwillbubbleuptothedocumentfromthebuttonconsole。log(Bubble)})document。addEventListener(defaultEvent,(){Thisnevergetscalledsincetheeventcannotbubbleuptothedocumentfromthebuttonconsole。log(Default)})constbuttondocument。querySelector(button)button。dispatchEvent(bubbleEvent)button。dispatchEvent(defaultEvent)复制代码可取消cancelable
  cancelable属性决定事件是否可以通过调用e。preventDefault()取消。默认是false不可以。如果该属性是true值,你可以调用e。preventDefault()方法。e。preventDefault()会将事件defaultPrevented属性设置为true。constcancelableEventnewEvent(cancelableEvent,{cancelable:true})constdefaultEventnewEvent(defaultEvent,{cancelable:false})document。addEventListener(cancelableEvent,e{e。preventDefault()console。log(e。defaultPrevented)True})document。addEventListener(defaultEvent,e{e。preventDefault()console。log(e。defaultPrevented)False})document。dispatchEvent(cancelableEvent)document。dispatchEvent(defaultEvent)复制代码组合composed
  composed属性决定事件是否可以通过影子DOM向上传播。默认值是false。该属性仅在你使用自定HTML元素和影子DOM的时候才适用,它所做的是允许事件在影子DOM外面传播。如果你想在影子DOM中触发的事件可以在影子DOM外被捕捉到,就将其设置为true。
  没听懂没关系,后面学着学着就懂了给事件传递自定义数据
  当你使用自定事件时,你希望自定义的数据传递给你的事件。使用newEvent构造函数是不可能的,这也就是为什么会有第二种创建事件的方法。constmyEventnewCustomEvent(myEvent,{detail:{hello:World}})复制代码
  CustomEvent构造函数取代Event构造函数。这与newEvent的工作方式相同,但你可以将detail属性以及bubbles,cancelable和composed属性一起传递给第二个参数。detail属性中你设置的内容都会传递给事件监听器。constmyEventnewCustomEvent(myEvent,{detail:{hello:World}})document。addEventListener(myEvent,e{console。log(e。detail){hello:World}})document。dispatchEvent(myEvent)复制代码命名约定
  在我们讲自定义双击事件的例子前,我想先讲讲命名约定。你可以为自定义事件命名任何你想要的名字,但是还是遵循命名约定,以更方便使用自己的代码。最普遍的命名约定事件,是为事件添加custom:前缀。
  custom:以区分自定义事件和本身的事件,而且,如果JavaScript添加与你的事件同名的新事件,它还可以确保你的代码不会中断。举个例子,如果JavaScript添加了一个名为doubleclick事件,然后你已经在时候doubleclick自定义事件了,那么你会遇到问题,因为你自定义代码将触发该事件,并且浏览器也会尝试触发它自己的副本。AlwaysusesomeformofnamingconventionconstmyEventnewEvent(custom:doubleClick)复制代码双击事件
  在这个例子中,我们将创建一个双击的事件,只要你在短时间内单击一个元素,就会触发该事件。该事件还会将按钮单击之间的总时间作为自定义数据传递。
  首先,我们需要创建一个正常的单击事件监听器来确保是否有双击。constbuttondocument。querySelector(button)constMAXDOUBLECLICKTIME500letlastClick0button。addEventListener(click,e{consttimeBetweenClickse。timeStamplastClickif(timeBetweenClicksMAXDOUBLECLICKTIME){lastClicke。timeStampreturn}TODO:Doubleclickhappened。Triggercustomevent。lastClick0})复制代码
  上面的代码使用timeStamp属性来确保按钮上单击事件之间的时间。如果点击之间的时间超过500毫秒。则会立刻返回并更新lastClick的值。一旦我们在500毫秒内点击了两次,我们将通过if检查并触发我们的双击事件。为此,我们需要创建我们的事件并调用它。
  对于我们自定义的事件,我们将所有选项都设置为true,因为默认情况下,单击事件将所有这些属性设置为true,而且我们希望双击的行为类似于正常的单击。我们也将timeBetweenClicks传递到detail选项中。最后,我们在事件的目标上调度事件,这里是按钮元素。我们剩下要做的最后一件事就是监听事件。
  我们刚刚向按钮田间了一个简单的事件监听器,它将打印出DoubleClick之间的时间。总结
  自定义事件是JavaScript中处理手势和双击事件的好方案,最重要的是,他们非常容易实现和使用。
  本文为译文,采用意译
  【完】

别业和共业何谓别业和共业?一众生别业妄见别业是指个别的不是所有人都有这样的业众生个别的业有个别的妄见现个别的境界比如有色盲的人群眼睛是有病的分不清红绿色他们就是别业妄见因为眼睛没病的人是可以山窝凹的挂念凹山窝的挂念棉衣送去了没有?儿子电话里每隔一两周就要问一回。疫情封住了脚步,远路是去不了的。乘着换勤间隙,去南山乘乘凉,走走儿时最喜欢的泥草路吧。沿途阡陌交错,农民恬静的种着菜,喂古人为人奴,今人为钱奴旧社会里很多人被迫成为别人的奴隶,今天解放了,却有很多人主动选择成为金钱的奴隶。当奴隶的滋味可不好受,奴隶是没有自由,没有尊严的。想想现在世界杯,不说跑到卡塔尔去看,可能用电视看一宁波深秋自驾线路天花板,秋天逐渐开始接近尾声,错过再等一年不知道大家有没有注意,市区的树已经开始泛黄,街边落叶也逐渐多了起来。这也意味着今年的秋天逐渐开始接近尾声啦。深秋的景色总是比初秋来得更加浓郁热烈,那些还没有看到的秋景不如就让晚秋来2022年第三季度5G手机占有率排行,华为仅排第四,小米缺席前五近日,网上公布了2022年第三季度国内5G手机品牌的市场占有率,从图上可以看到,华为因为制裁,已经下滑到来第四,但是令人意外的是小米反而仅在第六,被荣耀反超,确实很令人意外。从图上华为可能牵手北汽,智选车有望迎来新成员从去年开始,华为在官方商城与线下门店推出智选手机,通过华为的渠道销售合作伙伴产品,现在这种模式可能继续拓展下去。有媒体爆料,华为可能牵手北汽,在线下门店增加智选车,通过华为渠道销售有用吗?芯片出口管制失败,美国恼羞成怒宣布对多家中企下黑手美国为了阻止中国在科技领域超越美国,打破其在全球该领域的垄断地位,从前总统特朗普任期开始,就对中国高科技企业进行丧心病狂的打压。结果证明,美国的打压行径非但无法阻止中国科技进步的势华为P50Pocket手机的维修遭遇向各位朋友报告一下我使用和维修华为P50Pocket的遭遇,供大家参考。一经过今年八月,恰逢老婆生日,她的手机使用也有一年多了,常说有点卡,于是我花1万多给她买了一台华为P50Po当前形势下应靠什么拉动经济当下经济严重下滑,原因在于防控疫情,在于美西方贸易脱钩,在于俄乌战争,在于美国的货币宽松与加息,在于通货膨胀,在于长期以来的高房价,而主要原因在于消费收缩,在于消费力贫弱,用百姓的中国电商高质量发展被外资看好,华尔街大鳄率先盯上阿里唯品会近期电商财报季,阿里唯品会都释放出一个类似的信号。阿里在财报中披露,将现有的股份回购计划另外增加150亿美元,并将有效期延长至2025年3月底前。截至目前,阿里已经回购约180亿美2023年能化商品展望6(消费和农资)2023年能化商品展望一商品宏观环境概述二产业专题分析(一)能源专题(二)基建专题(三)地产专题(四)消费和出口专题2。微观品种分析2。1耐用品2。1。1苯乙烯(1)回顾今年苯乙烯
无偿献血守护生命为进一步贯彻落实各级有关加强无偿献血工作的通知精神,积极响应公益事业号召,确保临床用血需要,2月28日上午,江苏省第二中医院组织广大职工无偿献血。此次献血活动得到全院各部门的广泛支梅德韦杰夫警告北约不要铤而走险原标题梅德韦杰夫警告北约不要铤而走险俄罗斯联邦安全会议副主席梅德韦杰夫3月2日表示,加拿大和德国的军事人员正在欧盟境内培训乌克兰军人使用豹式坦克,这可以被看做北约站在乌方一边。他还江苏男子钓鱼频繁遭遇黄大仙讨鱼吃,男子连着来,不给就抢长江君去江河湖泊野钓,许多人都碰过一些稀奇古怪的事,有的惊悚让人后怕,有的新奇有趣让人回味。而下面这位江苏徐州的钓鱼人,在荒野垂钓遭遇的一幕却让他哭笑不得,颇为头疼01hr爆钓大板顺河街推进机关效能建设,优化投资发展环境顺河街办事处始终秉承营商环境也是生产力,抓营商环境就是抓发展的理念,严格落实区委区政府优化营商环境工作各项要求,把优化经济发展环境作为经济发展的生命线,坚持用硬措施治理软环境,用真治哮喘,张仲景早献出一条妙计,躺在书里千余年,就看你能否发现大家好,我是呼吸科专家杜宝荣,今天跟大家说说哮喘这个病,对于此病,大家都不陌生,电视电影上经常看到,犯病了拿一个小瓶吸上一口就恢复正常,多数人对哮喘的理解就停留在这个层面,诚然,现看时尚博主的穿搭才发现今春牛仔衬衫最吃香,谁穿谁好看阳春三月,气温已经开始逐渐回升,尤其是在户外,渐渐地也能感受到夏季的气息了。而这种换季时节很多人都会选择用风衣卫衣等来过渡,不过今年看很多时尚博主的搭配我发现,在她们的穿搭中牛仔衬孩子久咳不愈?很有可能是患上百日咳!百日咳是什么?有哪些症状?如何预防?果果在治疗中赵崎霖摄岳阳晚报全媒体记者罗凯3个月大的果果(化名)连续咳嗽一个多月了,不仅剧烈,有时还喘不上气。没想到,竟然是得了百日咳。记者从岳阳市中医医院儿科获悉,今年百日咳患儿王斌委员要给予中小企业切实有力的发展支持全国政协委员包头市塞北机械设备股份有限公司董事长王斌作为军工三代,包头市塞北机械设备股份有限公司董事长王斌,一直对军工行业有着特殊的情怀。2007年,他成立塞北机械,致力将企业打造蔡天凤老公和岳母多张亲密合照流出,手放胸口亲吻,相处无边界感蔡天凤老公和岳母无边界互动,手放胸口亲吻,引发网友热议引言。蔡天凤蔡天凤老公抱着蔡天凤母亲,轻声安慰近日,香港名媛蔡天凤碎尸案引发了社会的广泛关注和讨论。28岁年轻貌美的女子,被经德国女斗士率上万人抗议,有望成下任总理,比默克尔更默克尔据环球时报报道,德国左翼党人士莎拉瓦根克内希特和知名作家爱丽丝施瓦泽召集上万名德国民众,发起了一场声势浩大的反战活动,反对西方进一步对乌克兰提供武器。在活动期间,瓦根克内希特宣读了央行重磅发声,事关货币政策降准降息人民币汇率房地产金融21世纪经济报道记者边万莉北京报道面对当前新的经济形势,今年货币政策走向如何?金融如何支持实体经济高质量发展?房地产金融政策落实情况如何?美联储加息背景下,未来降准降息是否可期人民
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网