我在chrome v71.0.3578.98上做了一些javascript测试,使用的是window.onload,我在加载DOM之前遇到了js
参考gif:https://imgur.com/nxHYjRr
下面是封装在一个简单的html标记中的代码。
<h1>Title...</h1>
<p>lorem500...</p>
<script>
  function pageLoad() {
    alert('I\'m alive');
  }
  window.onload = pageLoad;
</script>
所以在这个基本的页面中,我尝试在chrome v71中运行它,javascript首先运行,但是在firefox中,它会像预期的那样在页面加载之后加载。有什么想法吗?
发布于 2019-01-26 14:05:17
问题是alert会阻塞--当alert弹出窗口可见时,会阻止进一步的页面呈现,而且当window.onload运行时,页面很可能还没有呈现,特别是在它之前没有太多HTML的情况下。当onload运行时,所有元素都存在于文档中,只是它们可能不可见。(这取决于浏览器)
alert对用户非常不友好,而且很难使用(就像你遇到的那样)。改用console.log或适当的模式:
<h1>Title...</h1>
<p>lorem500...</p>
<script>
  function pageLoad() {
    console.log('I\'m alive');
  }
  window.onload = pageLoad;
</script>
如果您必须使用alert,则仅在即时setTimeout之后发出警报,从而使浏览器有机会在调用alert之前绘制页面,以防浏览器尚未呈现页面:
<h1>Title...</h1>
<p>lorem500...</p>
<script>
  function pageLoad() {
    setTimeout(() => {
      alert('I\'m alive');
    });
  }
  window.onload = pageLoad;
</script>
https://stackoverflow.com/questions/54376070
复制相似问题