javascript - ReferenceError : "twttr is not defined" even while using twttr. 就绪()

标签 javascript twitter

Firebug 控制台抛出错误。它声明我尝试用于跟踪社交事件的代码是在//platform.twitter.com/widgets.js 完成异步加载之前使用的。

ReferenceError: twttr is not defined twttr.ready(function (twttr) {

但是,我遵循了 Twitter 文档 (https://dev.twitter.com/web/javascript/events),并将其包装在 twttr.ready() 周围,就像处理 Facebook 事件一样。

  <script type="text/javascript">   //load social sharing buttons async
    (function(w, d, s) {
      function go(){
        var js, fjs = d.getElementsByTagName(s)[0], load = function(url, id) {
          if (d.getElementById(id)) {return;}
          js = d.createElement(s); js.src = url; js.id = id;
          fjs.parentNode.insertBefore(js, fjs);
        };
        load('//connect.facebook.net/en_US/all.js#appId=1111111111111111&xfbml=1', 'fbjssdk');
        load('https://apis.google.com/js/plusone.js', 'gplus1js');
        load('//platform.twitter.com/widgets.js', 'tweetjs');
      }
      if (w.addEventListener) { w.addEventListener("load", go, false); }
      else if (w.attachEvent) { w.attachEvent("onload",go); }
    }(window, document, 'script'));
</script>  

<script type="text/javascript">
        window.fbAsyncInit = function() {
              FB.Event.subscribe('edge.create', function(targetUrl) {
              ga('send', 'social', 'facebook', 'like', targetUrl);
            });
              FB.Event.subscribe('edge.remove', function(targetUrl) {
              ga('send', 'social', 'facebook', 'unlike', targetUrl);
            });
        }
        twttr.ready(function (twttr) {
         twttr.events.bind('tweet', function(e){
          if(!e) return;
          ga('send', 'social', 'twitter', 'tweet', theURL);
         })
        });
    </script>

有什么提示吗?

最佳答案

twttr 似乎还没有初始化。确保脚本 (//platform.twitter.com/widgets.js) 在您拥有的代码块之前加载。

这就是你变得未定义的原因 (twttr)。

看到您的编辑后,很清楚发生了什么。您的脚本在页面加载后追加头部并加载脚本。在您执行依赖于您注入(inject)头部的内容的代码之后,它仍在加载,这就是 twttr 尚未初始化的原因。

尝试下面的代码块:

window.addEventListener("load", function() {
    window.fbAsyncInit = function() {
        FB.Event.subscribe('edge.create', function(targetUrl) {
            ga('send', 'social', 'facebook', 'like', targetUrl);
        });
        FB.Event.subscribe('edge.remove', function(targetUrl) {
            ga('send', 'social', 'facebook', 'unlike', targetUrl);
        });
    }

    document.getElementById('tweetjs').addEventListener('load', function() {
        twttr.ready(function (twttr) {
            twttr.events.bind('tweet', function(e){
                if(!e) return;
                ga('send', 'social', 'twitter', 'tweet', theURL);
            })
        });
    }, false);
}, false);

如果您想要跨浏览器支持,您可能需要按照他们在函数中所做的首先检查 window.addEventListener,然后再回退到旧浏览器的 window.attachEvent。

关于javascript - ReferenceError : "twttr is not defined" even while using twttr. 就绪(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28550328/

相关文章:

php - 在哪里可以找到 PHP 输出/日志

javascript - MVC2 - 试图将文本框的值拉入 Javascript

JavaScript/Ajax 鼠标可选择对象

html - Twitter 意图推文添加正斜杠

python - Twitter API - 获取关注者的关注者数量

javascript - Jquery,搜索并显示隐藏的div

javascript - 基于原型(prototype)的 OO 与基于类的 OO 相比有哪些优势?

r - 无法使用 R 中的 setup_twitter_oauth() 函数来处理 twitter

ajax - 来自常规服务器的 Twitter OEmbed URL "No-Access-Control-Allow-Origin"

iphone - 如何以编程方式 "follow"iOS 应用程序中的 Twitter 提要?