如何检查Javascript何时完成

时间:2016-05-08 23:35:55

标签: javascript jquery ajax

我们正试图在wordpress中将一些广告区域实现为插件 出于某种原因,当插件调用它的谷歌地图js时,它会从页面中删除我的广告。我无法弄清楚为什么会这样,而不是进一步挖掘他们的代码,我们决定采用更简单的解决方案 我现在将广告加载到内容区域上方的隐藏div中,并在Google地图完成后将其移动到位。目前我只是使用setTimeout来实现这一点,但如果有一种方法来测试页面是否正确完成加载会更好。有点像$(window).load(function(){},而不仅仅是检查DOM已经完成加载,能够检查javascript是否已经完成执行。

有没有办法检查这样的事情?这也许是一种创建正在执行的所有js文件的输出的方法,所以我们实际上可以缩小谷歌地图的工作范围。

以下是我们展示广告的功能:

$( window ).load(function() {
    setTimeout(function(){
      var a = [1,2,3,4];
        a = shuffle(a);
         for (var i = 0; i < 4; i++) {
            if(document.getElementById("mrec"+i)){
              $("#ad"+a[i]).appendTo($("#mrec"+i));
              $("#ad"+a[i]).css({
                  'display': 'block'
              });
            }
         }
    },2500);
});

1 个答案:

答案 0 :(得分:1)

如果map插件返回一个值,你可以将它包装在一个promise中。 http://www.html5rocks.com/en/tutorials/es6/promises/。 Dojo长期以来对承诺有很好的支持。 https://dojotoolkit.org/documentation/tutorials/1.10/promises/

但如果插件在完成时没有返回任何内容,则执行类似

的操作
    var howOftenToCheck = 200,
        checkExist = setInterval(function() {
             if(document.getElementById('mapDiv')) {
                 clearInterval(checkExist);
                 // do stuff now that map has loaded
             }
        }, howOftenToCheck);
相关问题