javascript - 推文成功后,执行回调 + Twitter

标签 javascript jquery twitter

我正在执行“在 Twitter 上分享”功能。我有共享按钮,当我单击它时,将打开 Twitter 的小部件并向我显示共享框。当我按下小部件的推文按钮时,它会将我的消息发布到我的 Twitter 时间轴上。

现在我想处理回调,当我成功发推文时,不应显示弹出窗口,并且我的网站应重定向下一页。

我推荐了Is there a callback for Twitter's Tweet Button?这个问题但没有按照我的要求工作。

Twitter 提供事件,但它将在我们网站中嵌入的推文按钮上执行。我尝试使用以下代码:

<a href="https://twitter.com/share" class="twitter-share-button" data-url="http://www.pinceladasdaweb.com.br/blog/" data-via="pinceladasdaweb" data-lang="pt" data-text="Pinceladas da Web">Tweetar</a>

JS代码:

window.twttr = (function (d,s,id) {
var t, js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) return; js=d.createElement(s); js.id=id;
js.src="https://platform.twitter.com/widgets.js"; fjs.parentNode.insertBefore(js, fjs);
return window.twttr || (t = { _e: [], ready: function(f){ t._e.push(f) } });
}(document, "script", "twitter-wjs"));

twttr.ready(function (twttr) {
twttr.events.bind('tweet', function () {
    alert('Tweeted!');
});
});

});

成功推文后是否可以重定向到下一页?

最佳答案

一般来说,没有从推文中回调的方法或意图。我使用下面的 hack 在成功发送推文后进行回调:

window.twttr = (function (d,s,id) {
    var t, js, fjs = d.getElementsByTagName(s)[0];
    if (d.getElementById(id)) return; js=d.createElement(s); js.id=id;
    js.src="//platform.twitter.com/widgets.js"; fjs.parentNode.insertBefore(js, fjs);
    return window.twttr || (t = { _e: [], ready: function(f){ t._e.push(f) } });
    }(document, "script", "twitter-wjs"));

$(document).on('click','.twitter',function(){

   var tweetUrl = 'https://twitter.com/intent/tweet?url='+window.location.href;
   var x = screen.width/2 - 700/2;
    var y = screen.height/2 - 450/2;
    var child = window.open(tweetUrl, "popupWindow", "width=600, height=400,left="+x+",top="+y);
       child.focus();
      var timer = setInterval(checkChild, 1);
      document.domain = 'example.com';     //Replace it with your domain
      function checkChild() {
        if(child.closed){
          clearInterval(timer);
        }
        if(child.window && child.window.closed){   //Code in this condition will execute after successfull post
          //Do your stuff here
          console.log('I am here after a successful tweet.');
          clearInterval(timer);
        }  
      }
});

<a class="twitter"  href="javascript:void(0)">Tweet</a>

关于javascript - 推文成功后,执行回调 + Twitter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36305586/

相关文章:

asp.net - 如何使用 Twitter 作为网站的登录名

javascript - React 组件 ESLint 表示更喜欢默认导出

javascript - 从 Firefox 扩展与服务器通信

jquery - 调用新创建的类

javascript - ASP.NET MVC - 将服务器端事件传播到客户端

c# - 算术运算导致 tweetsharp 溢出异常

html - 如何调整线条的线宽?

javascript - 从 javascript 访问 html 表单元素

javascript - Google Maps Javascript API 不响应 iOS 10 中的触摸事件

jQuery Tag-It 定制