首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Chrome在加载DOM之前加载js事件

Chrome在加载DOM之前加载js事件
EN

Stack Overflow用户
提问于 2019-01-26 14:02:07
回答 1查看 374关注 0票数 0

我在chrome v71.0.3578.98上做了一些javascript测试,使用的是window.onload,我在加载DOM之前遇到了js

参考gif:https://imgur.com/nxHYjRr

下面是封装在一个简单的html标记中的代码。

代码语言:javascript
运行
复制
<h1>Title...</h1>
<p>lorem500...</p>
<script>
  function pageLoad() {
    alert('I\'m alive');
  }
  window.onload = pageLoad;
</script>

所以在这个基本的页面中,我尝试在chrome v71中运行它,javascript首先运行,但是在firefox中,它会像预期的那样在页面加载之后加载。有什么想法吗?

EN

Stack Overflow用户

发布于 2019-01-26 14:05:17

问题是alert会阻塞--当alert弹出窗口可见时,会阻止进一步的页面呈现,而且当window.onload运行时,页面很可能还没有呈现,特别是在它之前没有太多HTML的情况下。当onload运行时,所有元素都存在于文档中,只是它们可能不可见。(这取决于浏览器)

alert对用户非常不友好,而且很难使用(就像你遇到的那样)。改用console.log或适当的模式:

代码语言:javascript
运行
复制
<h1>Title...</h1>
<p>lorem500...</p>
<script>
  function pageLoad() {
    console.log('I\'m alive');
  }
  window.onload = pageLoad;
</script>

如果您必须使用alert,则仅在即时setTimeout之后发出警报,从而使浏览器有机会在调用alert之前绘制页面,以防浏览器尚未呈现页面:

代码语言:javascript
运行
复制
<h1>Title...</h1>
<p>lorem500...</p>
<script>
  function pageLoad() {
    setTimeout(() => {
      alert('I\'m alive');
    });
  }
  window.onload = pageLoad;
</script>

票数 2
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54376070

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档