外部JavaScript完成后获取警报

时间:2011-11-06 15:42:00

标签: javascript jquery asynchronous

我只在用户请求时才从Google加号按钮加载脚本。使用的代码如下:

    var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;
    po.src = 'https://apis.google.com/js/plusone.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);

当我触发此脚本时,它会将占位符更改为google plus按钮。占位符如下所示:

<g:plusone size="tall" annotation="none"></g:plusone>

我只是在需要时加载了一些其他按钮。

现在有时按钮需要一段时间才能加载。有没有办法在加载所有按钮时获得警报。

然后我可以只显示一个加载器,直到它完全加载,然后很好地显示它。

我使用jQuery作为我的javascript框架。

修改

要获得更好的解决方案,请查看以下问题:Invoking handler when all scripts finished loading via $.getScript

更好的方法是使用jQueries deffered object。我添加了一个小例子并且回答了问题。

2 个答案:

答案 0 :(得分:2)

jQuery提供了一种定义脚本加载处理程序的机制:

$.getScript( 'https://apis.google.com/js/plusone.js', function () {
    // the script has loaded and executed
});

在脚本执行完毕后调用此处理程序,因此它应该符合您的需求......

答案 1 :(得分:1)

如果要在不修改现有内容的情况下添加功能,请使用以下代码:

(function(){
    var poller = window.setInterval(function(){//Set poller
        if($('g\\:plusone').length == 0){      // When the document doesn't have
            clearInterval(poller);             // any g:plusone elements, clear
                                               // poller, and execute your code
            //Run your code..
        }
    }, 200);  //Checks at a frequence of 200ms
})();