На моем сайте есть код, который использует ajax для добавления в мой канал Twitter. В настоящий момент он работает отлично, но моя проблема в том, что когда не происходит твиттер-вызов или если я нахожусь в месте, где твиттер заблокирован через брандмауэр, я вижу только пустую область. Я хотел бы иметь функцию ошибки, которая позволит пользователям знать. «Произошла ошибка при загрузке канала Twitter. Повторите попытку позже.»
Вот код на данный момент;
(function($) {
$.fn.twitscroller = function(options) {
var
defaults = {
user: null,
visible: 1,
speed: 8000,
vertical: true,
count: 10
},
settings = $.extend({},
defaults, options);
this.each(function() {
var $this = $(this);
$this.html('');
$this.addClass('twitscroller-replace');
$.ajax({
type: "GET",
url: "http://twitter.com/status/user_timeline/" + settings.user + ".json?callback=?",
data: {
count: settings.count
},
dataType: "jsonp",
success: function(res) {
$('<ul>').appendTo('.twitscroller-replace')
$(res).each(function(i, val) {
var title = val.text
.replace(/\b(https?|ftp|file):\/\/[\-A-Z0-9+&@#\/%?=~_|$!:,.;]*[A-Z0-9+&@#\/%=~_|$]/ig, '<a href="$&">$&</a>')
.replace(/@(\w*)\b/ig, '@<a href="http://twitter.com/$1">$1</a>')
.replace(/#(\w*)\b/ig, '<a href="http://twitter.com/search?q=%23$1">#$1</a>');
time = TwitterDateConverter(val.created_at);
var link = "http://twitter.com/daspixl/statuses/" + val.id;
if (val.source == '<a href="http://bit.ly" rel="nofollow">bitly</a>') {
val.source = val.source.replace(val.source, '<a href="http://s.daspixl.com" rel="nofollow">http://s.daspixl.com</a>');
}
var source = val.source
$('<li></li>')
.html('<span class=\"title\">' + title + '</span>')
.append('<br /><span class=\"date\">' + time + ' via ' + source + '</span>')
.appendTo('.twitscroller-replace ul');
});
$('.twitscroller-replace').jCarouselLite({
vertical: settings.vertical,
visible: settings.visible,
auto: settings.speed
});
$('.twitscroller-replace').removeClass('twitscroller-replace');
}
});
});
return this;
}
})(jQuery);
function TwitterDateConverter(time){
var date = new Date((time || "").replace(/-/g,"/").replace(/[TZ]/g," ")),
diff = (((new Date()).getTime() - date.getTime()) / 1000),
day_diff = Math.floor(diff / 86400);
if ( isNaN(day_diff) || day_diff < 0 || day_diff >= 31 )
return;
return day_diff == 0 && (
diff < 60 && "just now" ||
diff < 120 && "1 minute ago" ||
diff < 3600 && Math.floor( diff / 60 ) + " minutes ago" ||
diff < 7200 && "1 hour ago" ||
diff < 86400 && Math.floor( diff / 3600 ) + " hours ago") ||
day_diff == 1 && "Yesterday" ||
day_diff < 7 && day_diff + " days ago" ||
day_diff < 31 && Math.ceil( day_diff / 7 ) + " weeks ago";
};
Любая помощь будет отличной.
Спасибо,
Джеймс