javascript回调上下文问题

标签 javascript jquery callback

尝试制作一个简单的小部件。 步骤:

1) 加载 jQuery(如果尚未存在) 2)回调函数

<html>
<head>
    <script type="text/javascript">
    function load(callback){
        console.log('load');
        if (typeof jQuery !== "function") {
            var js = document.createElement("script");
            var he = document.getElementsByTagName('head')[0];
            js.type = "text/javascript";
            js.src = "http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js";
            he.appendChild(js);
            js.addEventListener("load", function () {
                callback();
            });
        }
        else
            {
                callback();
            }
    }


    load(function(){
        chart();
    })


    function chart(){
        $('#chart').html("id : "+Math.random());
    }

    // alert('This alert breaks!');
    </script>
</head>
<body>
    <div id="chart"></div>
</body>
</html>

代码可以在没有警报的情况下运行。无法理解上下文问题

谢谢

最佳答案

好的,问题解决了。

您的代码不在 DOM 就绪处理程序内。

如果警报不存在,它将起作用,因为函数调用是异步的,并且 DOM 在 AJAX 完成之前就已准备好。

但是当警报出现时,它会在您的代码中创建一个断点,并且在您单击确定之前,DOM 不会完成。问题是 AJAX 请求没有停止。当您单击确定时,AJAX 将完成并在 DOM 准备就绪之前运行回调。

关于javascript回调上下文问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21124324/

相关文章:

jquery - 单击导航时旋转图像或 div

java - 如何在Spring上下文中注入(inject)回调类?

javascript - 如何正确处理父异步调用中的一系列异步调用

javascript - 使用 pikaday 日期选择器创建日期范围字段

javascript - 处理组合键盘快捷键

javascript - iOS 上的 Rails - 在 :method => :delete 上找不到操作 "show"

javascript - 在 jQuery 中确定来自 PHP 的响应

JavaScript - 检查函数的最佳实践

javascript - 将音频文件/blob 从 UI 发送到 Servlet 以保存在服务器上。

javascript - 使用新信息对 div 进行屏幕上和屏幕上的动画处理