【问题标题】:After successful tweet, execute the callback + Twitter推特成功后,执行回调+推特
【发布时间】:2018-05-10 22:20:48
【问题描述】:

我正在执行“在 Twitter 上分享”功能。我有分享按钮,当我点击它时会打开一个 twitter 小部件并向我显示分享框。当我按下小部件的 Tweet 按钮时,它会在我的 Twitter 时间轴上发布我的消息。

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

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

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

<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!');
});
});

});

有没有办法在成功推文后重定向到下一页?

【问题讨论】:

  • 你正在尝试什么代码?
  • 你介意分享一下你到目前为止所尝试的吗?
  • @itzmukeshy7 已添加代码,请查看。
  • 检查您的控制台是否有错误并分享;
  • @itzmukeshy7 我已经添加了我最新的鳕鱼,请告诉我如何处理 twitter 小部件补间按钮的成功回调。

标签: javascript jquery twitter


【解决方案1】:

一般来说,从推文中回调没有方法或意图。我在成功推文后使用以下技巧进行回调:

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>

【讨论】:

  • 我正在我的本地主机上对其进行测试,但它从未进入 // Do your stuff 回调,child.window.closed 为 null 并返回 Uncaught TypeError: Cannot read property 'closed' of null
  • 我编辑了您的代码并提供了一个工作示例。将child.window.closed 更改为child.window === null。这消除了 TypeError 并保留了预期的行为。
  • 即使我关闭推文弹出窗口,它也会每次执行,所以我拒绝了你的建议。
  • 我添加了以下检查,将删除 TypeError: if(child.window && child.window.closed){
  • 会不会是 Twitter 方面的某些变化破坏了这个解决方案?因为我使用的是完全相同的代码,并且不知何故它永远不会进入“成功的推文”条件。我在 localhost 中做,我不确定这条线是否会引起任何麻烦:document.domain = 'localhost';
猜你喜欢
  • 2015-02-02
  • 1970-01-01
  • 2015-03-12
  • 1970-01-01
  • 1970-01-01
  • 2016-11-06
  • 2014-10-07
  • 2014-10-14
  • 2021-01-22
相关资源
最近更新 更多