javascript - 在阻塞代码之前和之后做一些事情

标签 javascript jquery

请原谅我的糟糕标题,但现在,我什至不知道我不知道什么。

如果我有一个看起来像这样的 HTML 页面:

<html>
    <head>
        <script>
            jQuery(document).ready(function(){
                jQuery("#modalDiv").show();
                //This part takes up to a few seconds to execute and blocks the browser
                for(var i = 0; i < 10000; i++){
                    console.log("doing something");
                }
                jQuery("#modalDiv").hide();
            });
        </script>
        <style>
            #modalDiv{
                background-color:red;
                height:100px;
                width:100px;
            }
        </style>
    </head>
    <body>
        <div id="modalDiv"></div>
    </body>
</html>

ID 为“modalDiv”的元素永远不会显示在页面上。我不是要解决这个“问题”,我只是想了解幕后发生的事情,导致我的脚本按原样运行。

最佳答案

在所有同步操作完成并且您的代码将控制权返回到主事件循环之前,浏览器不会呈现对 DOM 的更改。这使您可以在用户不看到所有中间表单的情况下对页面进行大量更改——它会等到您完成并显示最终结果。

强制立即更新的一种方法是使用动画。

$(function () {
    jQuery("#modalDiv").show(5000);
    //This part takes up to a few seconds to execute and blocks the browser
    for (var i = 0; i < 10000; i++) {
        console.log("doing something");
    }
    jQuery("#modalDiv").hide(5000);
});

DEMO

关于javascript - 在阻塞代码之前和之后做一些事情,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17576513/

相关文章:

javascript - 谷歌地图标记事件 'dragend' 问题

javascript - 在 MVC Razor 中的 C# 和 Javascript 之间共享常量

jquery - 带有 'X' 图标的文本输入可在您开始输入后清除该字段

php - jQuery AJAX PHP JSON 问题

javascript - 重构 jquery 动画

javascript - 循环 2 "Loading"背景图片

javascript - 使用 kineticjs 在 mousemove 上绘制一个矩形并在 mouseup 上选择该矩形内的所有形状?

javascript - 检索查询字符串参数的优雅方法

javascript - div比例以保持纵横比

jquery - 使用 jQuery 在悬停时选择父级的同级