我有这个Twitter小部件工作得很好(并且很容易定制),但我有一个问题。我只想发布不到两天的推文,但我无法弄明白该怎么做。所以在HTML中,我有以下内容:
<ul id="twitter_update_list"></ul>
<script src="/assets/script_twitterwidget.js" type="text/javascript"></script>
<script src="http://twitter.com/statuses/user_timeline/YourTwitterProfile.json?callback=twitterCallback2&count=1" type="text/javascript"></script>
然后js有:
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);
return delta;
}
function absolute_time(created_at) {
var date = (created_at).substring(0,11);
var year = (created_at).substring(26);
var time = (created_at).substring(10,26);
var full = date + year + time;
var full = new Date(Date.parse(full)).toLocaleDateString();
return full;
}
if (delta < (48*60*60)) {
function twitterCallback2(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><a target="_blank" style="font-size:100%" href="http://twitter.com/'+username+'/statuses/'+twitters[i].id+'">'+absolute_time(twitters[i].created_at)+':'+'</a>'+' '+'<span>'+status+'</span></li>');
}
document.getElementById('twitter_update_list').innerHTML = statusHTML.join('');
}
}
我添加了相对时间函数和if语句以尝试仅发布最近的推文(没有该代码它会很好,但显示最后的推文是什么,无论它多大了)。但是,它没有做到这一点。谢谢你的帮助。
答案 0 :(得分:0)
上面的内容实际上非常接近,尽管我花了一整天的时间来弄明白。我只需要改写if语句并将其移到正确的位置。所以前两个函数都很好,但最后一个应该是:
function twitterCallback2(twitters) {
var statusHTML = [];
for (var i=0; i<twitters.length; i++) {
if ((relative_time(twitters[i].created_at)) < (3*24*60*60)) {
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><a target="_blank" style="font-size:100%" href="http://twitter.com/'+username+'/statuses/'+twitters[i].id+'">'+absolute_time(twitters[i].created_at)+':'+'</a>'+' '+'<span>'+status+'</span></li>');
}
}
document.getElementById('twitter_update_list').innerHTML = statusHTML.join('');
}
正如您所看到的,如果推文时间少于三天,它将发布到我网站上的小部件。