我想在我的网站上显示用户的推特供稿。最简单的方法是什么?我猜Javascript。我特别想要的是最后5条推文加载&然后,当另一条推文发出时,它会自动出现在推文的顶部。它需要覆盖几乎整个网站,除了标题和&页脚。有任何建议/代码吗?
干杯,非常感谢!
答案 0 :(得分:4)
在不刷新的情况下加载新数据需要是AJAX。要获取数据,请查看Twitter API http://apiwiki.twitter.com/。 API将允许您以选择的格式(xml,json,ect ...)获取数据,然后您可以解析并将数据或HTML返回到提交AJAX调用的页面。这应该会让你朝着正确的方向前进。
答案 1 :(得分:2)
最简单的方法是添加Twitter小部件:http://twitter.com/goodies/widget_profile并自动更新新推文(我认为使用AJAX)。您也可以设置尺寸。
答案 2 :(得分:0)
使用任何twitter包装器calss,例如此http://emmense.com/php-twitter/来获取状态并显示它。在函数内部使用javascript时间函数对php脚本进行ajax调用,并在容器上添加最新的推文。
你可以使用jquery进行dom更新
$('#dividhere')。prepend('
Bla bla bla');
答案 3 :(得分:0)
使用jQuery,sry用于我的编程语言,但我喜欢我们的捷克语
<script type="text/javascript">
jQuery(document).ready(function($){
$.getJSON('http://api.twitter.com/1/statuses/user_timeline/##USERNAME##.json?count=2&callback=?', function(zpravicky){
$("#twitter").html(formatujExtSocialniProfil(zpravicky));
});
});
</script>
在像这样的外部javascript文件代码中
function formatujExtSocialniProfil(twitters) {
var statusHTML = [];
for (var i=0; i<twitters.length; i++){
var username = twitters[i].user.screen_name;
var status = twitters[i].text.replace(/((https?|s?ftp|ssh)\:\/\/[^"\s\<\>]*[^.,;'">\:\s\<\>\)\]\!])/g, function(url) {
return '<a href="'+url+'">'+url+'</a>';
}).replace(/\B@([_a-z0-9]+)/ig, function(reply) {
return reply.charAt(0)+'<a href="http://twitter.com/'+reply.substring(1)+'">'+reply.substring(1)+'</a>';
});
statusHTML.push('<li><span>'+status+'</span> <br/><b><a href="http://twitter.com/'+username+'/statuses/'+twitters[i].id_str+'">'+relative_time(twitters[i].created_at)+'</a></b></li>');
}
return statusHTML.join('');
}
function relative_time(time_value) {
var values = time_value.split(" ");
time_value = values[1] + " " + values[2] + ", " + values[5] + " " + values[3];
var parsed_date = Date.parse(time_value);
var relative_to = (arguments.length > 1) ? arguments[1] : new Date();
var delta = parseInt((relative_to.getTime() - parsed_date) / 1000);
delta = delta + (relative_to.getTimezoneOffset() * 60);
if (delta < 60) {
return 'seconds ago';
} else if(delta < 120) {
return 'minute ago';
} else if(delta < (60*60)) {
return (parseInt(delta / 60)).toString() + ' minutes';
} else if(delta < (120*60)) {
return 'hours ago';
} else if(delta < (24*60*60)) {
return 'ago ' + (parseInt(delta / 3600)).toString() + ' hours';
} else if(delta < (48*60*60)) {
return 'yesterday';
} else {
return 'since ago' + (parseInt(delta / 86400)).toString() + ' days';
}
}