首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Chrome 89 更新事件触发顺序,导致99%的文章都错了(包括MDN)

对于这个现象,我感到很迷惑,我依稀记得,在几个月前,Chrome 还不是这样的行为,盲猜是不是因为 Chrome 版本的问题呢?...由于 Shadow DOM 会创建多个 targets ,导致了事件执行顺序的错误。 而上述问题在 Gecko (Mozilla Firefox 的排版引擎)却运行正常(先捕获再冒泡)。...1.按照旧版本事件触发机制 表现 目标元素触发事件顺序和注册事件顺序有关 2.新的的事件触发机制 表现 目标元素触发事件顺序按照先捕获再冒泡的顺序触发 而这个版本分界线是在 Chrome 89.0.4363.0...在 Chrome 89.0.4363.0 以及之后版本中,目标元素的触发事件顺序不再按照注册顺序触发!而是按照先捕获再冒泡的形式依次执行! 然后我们再来看看这样修改会给我们带来怎么样的影响。...首先我们要明确是的,网上以前的大部分文章已经不适用于当下的 Chrome 新版本了! 如果我们业务中有依赖相关的事件触发顺序,请仔细检查! 举个?

57050

分享 10 个你可能不知道的 Devtools 技巧!

Edge 和 Firefox 的 Devtools 都提供了编辑并重新发送网络请求的功能(Chrome 在最近的版本中也在尝试提供类似的能力,不过只能覆盖 Header ,体验并不是很好) 比如,在 Edge...或 Edge 的 DevTools 中点击 Replay XHR ,注意这个功能只能对 XHR 请求使用,不适用于 Fetch 或其他请求。...Safari 和 Chrome 的 Devtools 也有一个显示合成图层的 Layers 视图,不过功能上就不如 Edge 的强大了。 5. 禁用事件侦听器 事件侦听器有的时候也会妨碍网页的调试。...如果我们正在排查某个特定的问题,但每次移动鼠标或使用键盘时,都会触发不相关的事件侦听器,这可能会让我们很难专注的排查问题。...首先我们在 Element 选项卡找到并选中相应的元素,然后点击右侧的 Event Listeners 选项卡,找到我们想要删除的事件,然后点击 Remove 即可(在 Chrome 和 Edge 的操作相同

56010
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    自动化测试工具在敏捷开发中的选择与使用

    它支持多种编程语言(如Java、Python、C#等)以及不同的浏览器(如Chrome、Firefox等),适合做UI测试和回归测试。 优点: 支持多种浏览器和编程语言,跨平台性强。...缺点: 只适用于JavaScript和TypeScript,不适合后端或跨语言项目。 对于大型项目,测试用例多时,快照文件可能难以维护。 3....缺点: 仅限Java项目使用,不适用于其他语言。 主要用于单元测试,UI测试能力不足。 4. Cypress Cypress 是一个专门用于前端应用的测试框架,主要用于端到端(E2E)测试。...缺点: 只支持Chrome和Firefox,不支持IE等其他浏览器。 主要用于前端项目,不适合后端或跨平台项目。...data-testid="add-todo-input"]').type('Another Todo'); cy.get('[data-testid="add-todo-button"]').click

    13810

    新一代爬虫利器 Playwright!

    Playwright真的适用于Python吗?答案是肯定的,微软对于适用于Python的Playwright已准备就绪。可能会发生API重大更改。...但大概率是这种情况不会发生,微软还表示仅在他们知道它可以改善您使用新库的体验时,才会可能这样做。不过微软也提醒尚不支持特定于供应商的API的某些极端情况,例如收集Chromium跟踪,覆盖率报告等。...Playwright拥有适用于所有现代浏览器的完整API覆盖,包括Google Chrome和Microsoft Edge(带有Chromium),Apple Safari(带有WebKit)和Mozilla...使用Playwright,使用适用于Windows,Linux和macOS的WebKit构建,测试您的应用程序在Apple Safari中的行为。在本地和CI上进行测试。 测试手机。...有报文头模式适用于调试,而无报文头适用于CI / cloud执行。 拥有快速可靠的执行 自动等待APIs。Playwright交互会自动等待直到元素准备就绪。这样可以提高可靠性并简化测试编写流程。

    2.1K40

    微软出了一个 Python 小白神器!

    Playwright真的适用于Python吗?答案是肯定的,微软对于适用于Python的Playwright已准备就绪。可能会发生API重大更改。...Playwright拥有适用于所有现代浏览器的完整API覆盖,包括Google Chrome和Microsoft Edge(带有Chromium),Apple Safari(带有WebKit)和Mozilla...使用Playwright,使用适用于Windows,Linux和macOS的WebKit构建,测试您的应用程序在Apple Safari中的行为。在本地和CI上进行测试。 测试手机。...有报文头模式适用于调试,而无报文头适用于CI / cloud执行。 拥有快速可靠的执行 自动等待APIs。Playwright交互会自动等待直到元素准备就绪。...支持文件下载和上传,进程外iframe,原生输入事件,甚至是深色模式。 但它也有局限性 旧版Edge和IE11支持。

    1.7K30

    任务,微任务,队列和时间表

    由于与其他任务源的交互,它还会导致不确定性,并且可能中断与其他API的交互,但稍后会介绍更多。 这是用于使用微任务进行承诺的Edge凭单。...,click,promise,mutate,promise,timeout,timeout,因此Chrome似乎得到正确的。...在调用每个侦听器回调之后…… 如果脚本设置对象堆栈现在为空,请执行微任务检查点 — HTML:在回调步骤3 之后进行清理 以前,这意味着微任务在侦听器回调之间运行,但.click()会导致事件同步分派,...如果我创建了一个在事件触发时解决的Promise,则回调应在事务仍处于活动状态时在第4步之前运行,但是在Chrome以外的其他浏览器中不会发生,这会使库有点用。...实际上,您可以在Firefox中解决此问题,因为诸如es6-promise之类的承诺填充将突变观察者用于回调,而回调正确地使用了微任务。

    2.2K20

    jQuery 事件绑定 和 JavaScript 原生事件绑定

    ,参数的含义如下: event:事件类型,如 click、change、mouseover 等 data:传入监听函数的参数,通过 event.data 取到。...注意:使用 on() 方法添加的事件处理程序适用于当前及未来的元素(比如由脚本创建的新元素)。 提示:如需移除事件处理程序,请使用 off() 方法。...注意,这里的事件名称没有“ on ”,如鼠标单击事件 click ,鼠标双击事件 doubleclick ,鼠标移入事件 mouseover,鼠标移出事件 mouseout 等。...addEventListener() 是标准的绑定事件监听函数的方法,是W3C所支持的,Chrome、FireFox、Opera、Safari、IE9.0及其以上版本都支持该函数; 但是,IE8.0及其以下版本不支持该方法...下面绑定事件的代码,进行了兼容性处理,能够被所有浏览器支持: 1 function addEvent(obj,type,handle){ 2 3 try{ // Chrome、FireFox

    5.7K20

    《手把手教你》系列技巧篇(二十八)-java+ selenium自动化测试-处理模态对话框弹窗(详解教程)

    3.1警告框 警告框经常用于确保用户可以得到某些信息。 当警告框出现后,用户需要点击确定按钮才能继续进行操作。...; import org.openqa.selenium.firefox.FirefoxDriver; /** * @author 北京-宏哥 * * 《手把手教你》系列技巧篇(二十八)-java...Application,控制台输出,如下图所示: 2.运行代码后电脑端的浏览器的动作,如下小视频所示: 5.小结 5.1driver.switchTo().alert().sendKeys("Hello") 不适用于最新的...chrome 驱动程序   细心的童鞋或者小伙伴们可能会看到宏哥,在代码里用的是火狐浏览器,而不是Chrome浏览器。...查了资料才知道是:driver.switchTo().alert().sendKeys("Hello") 不适用于最新的 chrome 驱动程序 详细细节可以看一下这个链接 https://stackoverflow.com

    2.2K60

    14个你可能不知道的JavaScript调试技巧

    一起来看 大多数技巧都适用于Chrome控制台和Firefox, 尽管还有很多其他的调试工具,但大部分也适用。 1. debugger 除了, 是我们最喜欢、快速且肮脏的调试工具。...使用不同屏幕尺寸 在桌面上安装不同移动设备模拟器非常棒,但现实确是不可行的。如何调整窗口大小呢?Chrome提供了所需的一切。跳到控制台并点击‘切换设备模式’按钮。观察窗口变化即可! 4....创建视图并触发事件,最后你想了解函数调用的过程。 由于JavaScript不是一个很结构化的语言, 有时候很难知道什么时候发生了什么。...这个调试方法很快, 但缺点是不适用于私有或匿名函数。但除了私有和匿名函数, 这可能是找到调试函数的最快方法。(注意:这个函数和函数不是同一个东西。)...Postman 很棒(但Firefox更快) 许多开发人员使用Postman查看ajax请求。Postman真的很优秀。但打开一个新的窗口,写入请求对象,然后再来测试它们,显得很麻烦。

    1.7K90

    移动开发实用

    以下是历史原因,来源其他人的分享: 2007年苹果发布首款iphone上IOS系统搭载的safari为了将适用于PC端上大屏幕的网页能比较好的展示在手机端上,使用了双击缩放 (double tap to...解决方案: fastclick可以解决在手机上点击事件的300ms延迟 zepto的touch模块,tap事件也是为了解决在click的延迟问题 触摸事件的响应顺序 1、ontouchstart...select::-ms-expand { display: none; } 禁用 radio 和 checkbox 默认样式 ::-ms-check 适用于表单复选框或单选按钮默认图标的修改,同样有多个属性值...= ua.match(/Chrome\/([\d.]+)/) || ua.match(/CriOS\/([\d.]+)/), firefox = ua.match(/Firefox\/([..., browser.version = chrome[1] if (firefox) browser.firefox = true, browser.version = firefox[1]

    6.5K30

    Event(事件)的传播与冒泡

    -用e.cancelBubble属性来阻冒泡,注意ie9不支持cancelBubble属性(设置后不生效),但chrome、safari、opera、firefox都支持cancelBubble属性。...Ie8-用attachEvent为dom元素添加一个事件,但必须在事件名前加上on,此类事件只能在元素的冒泡阶段。...stopPropagatin()方法用于阻止事件的传播,如果设置在捕获阶段,则目标和冒泡阶段不会被执行; cancelBubble属性只能阻止冒泡阶段,对捕获和目标阶段的事件不能阻止 preventDefault...()和window.event.returnValue用于标准浏览器和ie9+,都可以阻止默认事件。...阻止默认事件只用于验证 应用场景 捕获阶段的事件应用场景较少,一般情况下都应用在目标和冒泡阶段。

    1.1K90

    《最新出炉》系列初窥篇-Python+Playwright自动化测试-1-环境准备与搭建

    它可以操控Chromium(用于Chrome、Edge等)、Firefox和WebKit(用于Safari)等主流浏览器,使我们能在不同浏览器中执行自动化测试。...首先,Playwright同样适用于多浏览器、多语言,这样对于准备过渡到这个工具的用户是非常友好的。...适用于 Android 和 Mobile Safari 的 Google Chrome 浏览器的本机移动仿真。相同的渲染引擎适用于您的桌面和云端。3.2稳定性自动等待。...可信事件。悬停元素,与动态控件交互,产生可信事件。Playwright 使用与真实用户无法区分的真实浏览器输入管道。测试框架,穿透 Shadow DOM。...这绕过了每个测试中的重复登录操作,但提供了独立测试的完全隔离。3.5强大的工具代码生成器。通过记录您的操作来生成测试。将它们保存为任何语言。调试。

    17.5K113

    javascript事件流的原理

    典型的例子有:页面加载完毕触发load事件;用户单击元素,触发click事件。 二、事件流 事件流描述的是从页面中接收事件的顺序。... 上面这段html代码中,单击了页面中的 元素, 在冒泡型事件流中click事件传播顺序为 —》—》—》document 在捕获型事件流中click事件传播顺序为...IE9、Firefox、Chrome、和Safari则将事件一直冒泡到window对象。 2)、IE9、Firefox、Chrome、Opera、和Safari都支持事件捕获。...尽管DOM标准要求事件应该从document对象开始传播,但这些浏览器都是从window对象开始捕获事件的。 3)、由于老版本浏览器不支持,很少有人使用事件捕获。建议使用事件冒泡。...note: 1)、尽管“DOM2级事件”标准规范明确规定事件捕获阶段不会涉及事件目标,但是在IE9、Safari、Chrome、Firefox和Opera9.5及更高版本都会在捕获阶段触发事件对象上的事件

    1K10

    Python 自动化,Helium 凭什么取代 Selenium?

    和 FireFox 2.优缺点 Helium 主要包含下面 6 个优点: Helium 自带 WebDriver,不需要下载、配置浏览器驱动 内嵌页面 iframe 页面元素直接操作,不需要使用 switch_to.frame...和 FireFox 浏览器 版本更新慢、遗留 Bug 及文档少 3.准备一下 切换到对应的虚拟环境下,通过 pip 命令安装依赖即可 # 安装依赖 pip3 install helium 接着,我们在...element_password.send_keys(password) # 登录按钮 wait.until(EC.element_to_be_clickable((By.XPATH, '//a[@id="dologin"]'))).click...可以显式等待元素出现,默认最长时间为 10s 比如,这里等待登录完成的主页面加载完成,收件箱可以点击,执行一次点击操作 wait_until(Text('收 信').exists) # 点击收件箱 click...() 方法返回的对象实际上就是 WebDriver 对象,可以结合 Selenium API 一起使用 5.最后 通过上面的对比发现,Helium 相比 Selenium 使用似乎更方便,但是它不适用于一些复杂的页面

    1.8K10

    点击劫持(ClickJacking)漏洞挖掘及实战案例全汇总

    1、漏洞理解 点击劫持(Click Jacking)是一种视觉上的欺骗手段,攻击者通过使用一个透明的iframe,覆盖在一个网页上,然后诱使用户在该页面上进行操作,通过调整iframe页面的位置,可以使得伪造的页面恰好和...Clickjacking是仅此于XSS和CSRF的前端漏洞,因为需要诱使用户交互,攻击成本高,所以不被重视,但危害不容小觑,攻击效果见案例。...对于漏洞的防范大部分浏览器支持的防御办法是使用X-Frame-Options头,通常设置为DENY可以很好地防范漏洞,其次SAMEORIGIN可以在某个页面失守时被绕过,ALLOW-FROM uri不被Chrome...其次还有CSP头:Content-Security-Policy: frame-ancestors 'self'仅支持FireFox。...漏洞防御 主要有三种防御办法: 1)X-Frame-Options,建议设置为DENY; 2)Content-Security-Policy:frame-ancestors 'self'或‘none’,不适用于

    10.3K40
    领券