首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >为什么DOMContentLoaded处理程序可以阻止第一次绘制?

为什么DOMContentLoaded处理程序可以阻止第一次绘制?
EN

Stack Overflow用户
提问于 2020-07-25 15:07:30
回答 2查看 375关注 0票数 10

有一个https://stackoverflow.com/questions/32656594/domcontentloaded-blocks-page-loading没有被解析。

当侦听DOMContentLoaded的处理程序可以阻止第一次绘制时,我遇到了一种情况。有时它会阻塞,有时它不会

我试过很多次cmd +R来看它。对这种行为有什么解释吗?

另外,我录制了一段视频,显示如下:https://www.youtube.com/watch?v=EDZQ1nLCK2w&feature=youtu.be

  1. 当您在重新加载后看到一个空白页时,这意味着DOMContentLoaded阻塞了第一个油漆。
  2. 当您看到文本“一些文本”,然后在重新加载后的空白页,这意味着DOMContentLoaded没有阻止第一次油漆
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
window.addEventListener('DOMContentLoaded', () => {
    let i = 0;
    while (i++ < 1000000000) {
        continue;
    }
    document.getElementById('el').remove();
});
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <p id="el">Some text</p>
</body>
</html>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-01-23 04:28:16

我想通了。眨眼呈现引擎中有一个错误,它同步地分派DOMContentLoaded事件。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// #blink/renderer/core/dom/document.cc
// #blink::Document::FinishedParsing

// FIXME: DOMContentLoaded is dispatched synchronously, but this should be
// dispatched in a queued task, see https://crbug.com/425790
if (document_timing_.DomContentLoadedEventStart().is_null())
  document_timing_.MarkDomContentLoadedEventStart();
DispatchEvent(*Event::CreateBubble(event_type_names::kDOMContentLoaded));
if (document_timing_.DomContentLoadedEventEnd().is_null())
  document_timing_.MarkDomContentLoadedEventEnd();
SetParsingState(kFinishedParsing);

**为什么有时是异步发送的,我不知道。现在,在我这一边,它总是同步的(在提出问题的时候可能还有一个bug )

票数 0
EN

Stack Overflow用户

发布于 2020-07-28 04:37:20

这是比赛条件。有时,在添加侦听器之前,文档已经加载/交互。

通过检查文档的readyState:document.readyState,可以看出两者之间的区别。您的代码没有运行,因为有时状态已经是interactivecomplete,这意味着在实际添加侦听器之前DOMContentLoaded事件已经启动。

处理这个问题的方法应该是这样的:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
function init() {
    let i = 0;
    while (i++ < 1000000000) {
        continue;
    }
    document.getElementById('el').remove();
}

if (document.readyState === 'loading') {
    // Document not yet loaded, so wait for it.
    window.addEventListener('DOMContentLoaded', init);
} else {
    // Document is ready (interactive or complete), so call init immediately.
    init();
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63094476

复制
相关文章
DOMContentLoaded实现
IE系列直到IE9才支持DOMContentLoaded事件,对于IE8及其之前版本,如果html内没有框架,则可以采用document.documentELement.doScroll来判断 是否构建好DOM树;如果html内有框架,则利用document的onreadystatechange事件判断当前DOM树是否构建完毕(框架html内容(只是html文件)加载之后DOM树构建完毕)。 所以可以采用这种方式: /** * 实现DomContentLoaded的兼容性
欲休
2018/03/15
5860
为什么LONGNET可以处理10亿个令牌
Vaswani等人在2017年引入的Transformers是LLM和许多其他机器学习任务的基石。它成功的主要原因之一是自注意力机制。但是随着模型的扩大这种机制成为计算瓶颈,特别是对于长序列。
deephub
2023/08/30
2550
为什么LONGNET可以处理10亿个令牌
DOMContentLoaded和window.onload
相信写js的。都知道window.onload吧,可是并非每一个人都知道DOMContentLoaded,事实上即使你不知道。非常有可能你也常常使用了这个东西。
全栈程序员站长
2022/07/06
1.5K0
从 8 道面试题看浏览器渲染过程与性能优化
移动互联网时代,用户对于网页的打开速度要求越来越高。百度用户体验部研究表明,页面放弃率和页面的打开时间关系如下图 所示。
null仔
2020/03/02
1.2K0
微信小程序阻止事件冒泡
江拥羡橙
2023/02/24
2.9K0
微信小程序阻止事件冒泡
文档解析和DOMContentLoaded触发时机
| 导语 大家都知道 HTML 文档完全加载和解析完成之后,会触发 DOMContentLoaded 事件,那么 HTML 里面的内容会如何影响文档解析呢?在解析过程中遇到 script 标签或者 link 标签时,解析会受影响吗?我们通过不同情况举例和 HTML5 规范一起分析一下。 DOMContentLoaded 触发定义 HTML 文档被完全加载和解析完成之后,会触发 DOMContentLoaded 事件,通常外部样式表和文档内的图片加载都不会影响该事件触发,不过也有特殊情况,我们后面会提到。 如
用户1097444
2022/06/29
7820
文档解析和DOMContentLoaded触发时机
前端资源浏览器渲染原理
当有了DOM Tree和 CSSOM Tree后,就可以两个结合来构建Render Tree了
冷环渊
2023/02/26
5750
前端资源浏览器渲染原理
【前端】:async、defer、onload、DOMContentLoaded
The HTML <script> element is used to embed or reference executable code; this is typically used to embed or refer to JavaScript code.
WEBJ2EE
2019/12/31
1.9K0
【前端】:async、defer、onload、DOMContentLoaded
【python图像处理】python绘制
3D图形在数据分析、数据建模、图形和图像处理等领域中都有着广泛的应用,下面将给大家介绍一下如何使用python进行3D图形的绘制,包括3D散点、3D表面、3D轮廓、3D直线(曲线)以及3D文字等的绘制。
py3study
2020/01/10
1.5K0
【python图像处理】python绘制
第一次遭遇挖矿程序
问题分析 1. 两台服务器收到告警,top 查看进程发现如下可疑进程 # top PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 19078 vmuser 20 0 680232 14284 1032 S 342.8 0.1 1583:11 md 501 vmuser 20 0 32348 3264 760 R 55.9 0.0 2172:49 [at
tanmx
2018/07/16
1.4K0
第一次绘制K线图与网络图
The following objects are masked from ‘package:base’:
黑妹的小屋
2020/08/06
8970
为什么开源可以提高程序员的编程技能?
为什么开源可以提高程序员的编程技能? 我已经写了很多年的软件。最近我意识到,我越涉及(致力于,结合于等)开源技术,我写出来的代码就更好。这不由地让我疑惑起来:难道里面有什么相关性或因果关系吗? 阅
用户1289394
2018/02/27
6790
为什么开源可以提高程序员的编程技能?
为什么开源可以提高程序员的编程技能?
我已经写了很多年的软件。最近我意识到,我越涉及(致力于,结合于等)开源技术,我写出来的代码就更好。这不由地让我疑惑起来:难道里面有什么相关性或因果关系吗?
哲洛不闹
2018/09/18
3480
为什么开源可以提高程序员的编程技能?
为什么开源可以提高程序员的编程技能?
我已经写了很多年的软件。最近我意识到,我越涉及(致力于,结合于等)开源技术,我写出来的代码就更好。这不由地让我疑惑起来:难道里面有什么相关性或因果关系吗? 阅读代码能让你变得更优秀 我在编程生涯的早期就明白我阅读的代码越多,我的代码就能变得更好。我知道,当我不得不维护其他人的代码时,简单和干净的代码几乎总是比花哨或复杂 的代码好—— 即使有注释。然而另一方面,当我花足够的时间去理解复杂代码的时候,我常常能够学到新的技巧。不论怎么样,都能让我有所提高。 这使得我在那些没有代码审查的地方一再争取。而当没有足够的
wangxl
2018/03/08
6610
css是否会阻塞与DOMContentLoaded
原本只是想分享Network的一些内容,结果到DOMContentLoaded的时候给卡住了,网上很多强调css不会阻塞DOM解析,可以说对又可以说不对。
wade
2021/05/28
6980
css是否会阻塞与DOMContentLoaded
HTML解析之DOMContentLoaded和onload
在很久很久以前,我在封装自己的JQuery库时就使用过DOMContentLoaded,觉得这个知识点看看别的文章就行了,不过现在我想把它记下来。
全栈程序员站长
2022/11/16
1.6K0
HTML解析之DOMContentLoaded和onload
为什么开源可以提高程序员的编程技能?
我已经写了很多年的软件。最近我意识到,我越涉及(致力于,结合于等)开源技术,我写出来的代码就更好。这不由地让我疑惑起来:难道里面有什么相关性或因果关系吗? 阅读代码能让你变得更优秀 我在编程生涯的早期
用户1667431
2018/04/18
6170
为什么开源可以提高程序员的编程技能?
机器为什么可以学习
机器学习、人工智能炙手可热,但是机器到底为什么可以学习呢?本文将从霍夫丁不等式讲到VC维,探究机器学习的原因所在。 机器怎么可能学习 机器确实可能会学习 机器为什么可以学习 机器学习的一
用户1147754
2018/01/02
8380
机器为什么可以学习
java应用被阻止_怎样解决运行java提示应用程序已安全设置被阻止[通俗易懂]
大家好,又见面了,我是你们的朋友全栈君。 Win7系统运行java时出现提示应用程序已安全设置被阻止,这样就导致运行java失败,那么怎样解决运行java提示应用程序已安全设置被阻止呢?下面跟着学习啦
全栈程序员站长
2022/09/08
4.4K0
java 网页提示被阻止怎么办,应用程序已被java安全阻止怎么办
1、完成JAVA版本更新,然后刷新有问题的网页页面,以排除JAVA版本问题引起JAVA安全阻止;
全栈程序员站长
2022/09/08
6.4K0
java 网页提示被阻止怎么办,应用程序已被java安全阻止怎么办

相似问题

rails 5的DOMContentLoaded处理程序

13

为什么临时变量可以阻止客户端删除事件处理程序?

69

第一次阻止单击处理程序的敲除验证

22

Qt:鼠标事件处理程序可以互相阻止吗?

13

如何在激发WebView之前阻止DOMContentLoaded呈现元素?

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文