2010-07-11 40 views
0

我有這個Twitter小工具,工作得很好(很容易定製),但我有一個問題。我只想發佈不到兩天的推文,但我無法弄清楚如何去做。所以在HTML,我有以下幾點:Twitter小工具 - 只發布不到兩天的推文

<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&amp;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(/\[email protected]([_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

上述事實上是非常接近的,儘管我花了整整一天的時間才弄明白。我只需重新說明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(/\[email protected]([_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(''); 
} 

正如你所看到的,如果鳴叫時間少於三天前,它會發布到我的網站上的小部件。