Google Plus API onload回调行为

时间:2014-04-22 20:42:19

标签: javascript google-plus google-plus-one

我正在尝试从我的对象中的函数中加载Google Plus API,例如:

var myObject = {
    initialize : function(options) {
        window.___gcfg = {
          parsetags : 'explicit'
        };  

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

        ...

然后我将onLoadGooglePlus()定义在对象外部,作为常规全局函数。

现在,如果我执行匿名函数从MY对象中加载GAPI,则使用initialize()函数不会调用回调。在这种情况下,"这个"关键字指向MY对象。

但是,如果我执行以下操作(这使得"此"关键字指向" Window"),它可以工作:

initialize : function(options) {
    window.___gcfg = {
      parsetags : 'explicit'
    };  

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

我真的很困惑,这是否与"这"关键字可以吗?因为从Firefox的控制台调用我的函数myObject.initialize()使它工作(我的" onload"回调被执行),但除此之外我没有,除非我使用setTimeout(。 ..,0)

0 个答案:

没有答案