【问题标题】:How do I make sure the HTML content is rendered before `alert` pops up when calling from a setInterval callback?从 setInterval 回调调用时,如何确保在弹出“警报”之前呈现 HTML 内容?
【发布时间】:2019-09-05 16:56:47
【问题描述】:

更新:

请看this

我认为这与window.load 的东西没有任何关系。它看起来像 setIntervalalert 问题。我想找到一个有固定原因的最佳数字,而不是靠运气。

$('body').text('5');
alert('ok1');



$('body').text('6');
setTimeout(function(){
alert('ok2');

},0)
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

如何确保 HTML 页面在alert 弹出之前呈现?

【问题讨论】:

标签: javascript alert setinterval


【解决方案1】:

您需要将代码放入相关的事件侦听器中,DOMContentLoadedload

  • DOMContentLoaded - 表示浏览器已完全加载 HTML,并且 DOM 树已构建,但图片和样式表等外部资源可能尚未加载
  • load – 不仅加载了 HTML,还加载了所有外部资源(图像、样式等)

对于load(更一般的)事件,你的监听器看起来像这样:

window.addEventListener('load', function(event) {
  alert('ok1');
  // rest of your code
});

【讨论】:

  • jsfiddle.net/w85kphz6 请您看一下这个好吗?通过将TIMEOUT_MS 设置为不同的数字,例如 0、5、10 或 20,警告框对阻止 HTML 刷新的影响会很小或没有影响。我想知道,如何确定TIMEOUT_MS 的完美数字。我认为这应该不是靠运气解决的问题。
  • @AGamePlayer “阻止 HTML 刷新”是什么意思。这将在网站上的所有 HTML 都呈现后运行。
  • 请你看一下这个jsfiddle,imo,当alert弹出时,按钮上的数字应该总是5。但在实际情况下,它不是。
猜你喜欢
  • 1970-01-01
  • 2017-12-27
  • 1970-01-01
  • 2015-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-19
相关资源
最近更新 更多