【发布时间】:2011-06-24 06:51:55
【问题描述】:
有没有办法在 Twitter 的 Tweet 按钮上注册回调?我希望能够跟踪我网站上的哪些特定用户发布了链接。我无法添加 onClick 事件,因为它是跨域 iFrame。还有其他想法吗?
我见过one way to do it,但它似乎不可靠。 Their documentation 没有提及任何内容,因此我正在寻求解决方法的帮助。
【问题讨论】:
标签: jquery api twitter callback
有没有办法在 Twitter 的 Tweet 按钮上注册回调?我希望能够跟踪我网站上的哪些特定用户发布了链接。我无法添加 onClick 事件,因为它是跨域 iFrame。还有其他想法吗?
我见过one way to do it,但它似乎不可靠。 Their documentation 没有提及任何内容,因此我正在寻求解决方法的帮助。
【问题讨论】:
标签: jquery api twitter callback
Twitter 有 Web Intent events 用于 loaded、rendered、resize、tweet、follow、retweet、like 和 click。
twttr.events.bind(
'tweet',
function (event) {
// Do something there
}
);
2015 年秋季的behavior was changed,原因是事件完成后发生的回调不可靠。
它们现在将在用户调用您页面中的操作时触发,而不是在操作完成后触发。
<script>
// Performant asynchronous method of loading widgets.js
window.twttr = (function(d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0],
t = window.twttr || {};
if (d.getElementById(id)) return t;
js = d.createElement(s);
js.id = id;
js.src = "https://platform.twitter.com/widgets.js";
fjs.parentNode.insertBefore(js, fjs);
t._e = [];
t.ready = function(f) {
t._e.push(f);
};
return t;
}(document, "script", "twitter-wjs"));
</script>
<script>
// Wait until twttr to be ready before adding event listeners
twttr.ready(function (twttr) {
twttr.events.bind('tweet', function(event) {
console.log(event);
});
});
</script>
【讨论】:
function loguser( event ) {
if ( event ) {
alert( 'Tweeted' );
console.log( event );
}
}
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"));
twttr.ready(function (twttr) {
twttr.events.bind('tweet', loguser);
});
【讨论】:
如果您加载 Twitter Widgets JS,您可以将回调函数绑定到 tweet 事件。请看下面的代码:
<a href="https://twitter.com/intent/tweet?url=http://yoursite.com/about&text=Message">Twitter</a>
<script>
//Twitter Widgets 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"));
//Once twttr is ready, bind a callback function to the tweet event
twttr.ready(function(twttr) {
twttr.events.bind('tweet', function (event) {
console.log('tweet, tweet');
});
});
</script>
【讨论】:
<a href="https://twitter.com/IamAnessaReyes" class="twitter-follow-button" data-show-count="false">Follow @IamAnessaReyes</a>
<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="//platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script>
【讨论】:
是的,有一个回调函数。也适用于自定义 Twitter 按钮。 你可以在这里找到它:https://dev.twitter.com/discussions/671
【讨论】:
我刚刚实现了一个推文回调事件。
更多关于 Twitter 回调事件的信息
- Twitter Web Intents
- Web Intents Javascript Events
Javascript 回调
$.getScript("http://platform.twitter.com/widgets.js", function(){
function handleTweetEvent(event){
if (event) {
alert("This is a callback from a tweet")
}
}
twttr.events.bind('tweet', handleTweetEvent);
});
推文按钮:
<a href="http://twitter.com/intent/tweet?url=http://test.com;via=stack">twitter</a>
【讨论】: