通过Window.open的Web Intent回调事件就是不会发生

时间:2013-11-19 13:02:28

标签: twitter javascript-events callback

想知道是否有人可以提供帮助。请参阅下面的附件代码:

  • 如果我通过正常的“a href”启动Web Intent,然后发推文我得到了回调。可爱。

  • 但是,如果我通过window.open启动Web Intent,比如按一下按钮,我就不会。请参阅以下代码。

  • 可以,捕获按钮点击,然后点击“a href”。此时,我然后获得回调。但是,某些浏览器(例如Safari)中的此操作会被弹出窗口阻止程序捕获,因此没有人会看到弹出窗口。这有点无用。

我想使用window.open方法,并获得回调。有什么想法吗?

*代码开头 * *

<!doctype html>
<html lang="en">
<head lang=en>
    <meta charset="utf-8">
    <title>Web Intent t3 Experiment</title>
    <script src="http://d3js.org/d3.v3.min.js"></script>
    <script src="https://platform.twitter.com/widgets.js" type="text/javascript">    </script>
</head>
<body>

<a href="https://twitter.com/intent/tweet?url=http://www.google.com&text=testing web intents">Option 1: Tweet via Link</a><br />
<button id="tf_sendtweet_button">Option 2: Tweet Via Button and JS</button>

<script type="text/javascript">
var t_element = d3.select("#tf_sendtweet_button");
t_element.on("click", function() {
        _text = "Some compelling text to go in a tweet";
        _url = "http://www.google.com/";

        var tweet_url = 'https://twitter.com/intent/tweet?text=';
        tweet_url += encodeURIComponent(_text);
        tweet_url += '&url=' + encodeURIComponent(_url);
        window.open(tweet_url,'_blank');
});



// Here, trap the callback from the WebIntent.
twttr.ready(function (twttr) {
    // bind events here
    twttr.events.bind('tweet', function (event) {
        alert("Yay, tweet callback baby. Gotcha.");
        console.log(new Date(), "Sweett, tweet callback: ", event);
    });
}); 
</script>
</body>
</html>

*代码结束 * *

1 个答案:

答案 0 :(得分:1)

好的,大家都很轻松。 Twitter员工已经回答了这个问题:

  

不幸的是,如果不让我们的javascript控制窗口打开,你就无法使用回调事件功能。

https://twittercommunity.com/t/get-web-intent-callback-from-a-window-open-call/20881