【问题标题】:Does it make any difference if a Window setTimeout is made to be dependent on jQuery DOM ready?如果使 Window setTimeout 依赖于 jQuery DOM 就绪,这有什么区别吗?
【发布时间】:2017-04-27 00:23:46
【问题描述】:

我只是想在页面加载几秒钟后执行一些代码。为此,我可以这样做..

 setTimeout(function() {
            alert("Now I am free");
    }, 3000);

或者我可以让它在文件准备好时触发......

 jQuery(document).ready(function ($) {

   setTimeout(function() {
     alert("Now I am free");
    }, 3000);
});

这两种方法有什么区别?哪个更好?

【问题讨论】:

标签: javascript jquery event-handling document-ready


【解决方案1】:

第一种方法(只是设置一个延迟)有一个计时漏洞:计时器可能会在页面完成加载之前关闭。

您可能认为这不太可能,并且在您的系统上也可能不太可能。但是考虑到访问者的设备具有边际内存容量,因为操作系统正在尝试更新自身,同时 Web 浏览器中的 15 个打开的选项卡正在尝试执行后台 AJAX 调用,并且浏览器正在显示“没有响应”在顶部。比如说,浏览器又需要 30 秒才能再次开始响应。 这不是虚构的场景

使用文档就绪机制来启动计时器可以保证在计时器关闭时可以通过回调代码来操作 DOM。您还可以在窗口“加载”事件中添加一个事件侦听器,以在普通 JavaScript 中执行相同的操作。

部分末尾的脚本块中启动计时器也可以消除计时器过早关闭的风险。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-12
    • 1970-01-01
    • 1970-01-01
    • 2014-12-09
    • 2013-12-23
    • 2012-01-13
    • 2015-11-13
    • 1970-01-01
    相关资源
    最近更新 更多