Виджет Twitter не всегда заполняется

#javascript #twitter

#javascript #Twitter

Вопрос:

Я показываю канал Twitter из их виджета feed на своем веб-сайте. Иногда виджету нравится не отображать никакой информации. Я полагаю, это потому, что API перегружен. В любом случае, есть ли какой-либо известный способ отображения сообщения об ошибке в случае, если Twitter не может загрузить мой канал? Кто-нибудь еще сталкивался с этими проблемами?

Комментарии:

1. Я попытался отладить вашу страницу, чтобы посмотреть, что происходит с Twitter, и наткнулся на другую ошибку. В fbaccess.js строка 10, if(x.substr(0,12) != 'access_token') { содержит ошибку. x = get_cookie("access_token"); устанавливает x в null значение, если нет файла cookie. Затем x.subtr происходит сбой, потому что x не является строковым объектом. Вероятно, следует изменить его на, if(x amp;amp; x.substr(0,12) != 'access_token') {

2. Фрейм виджета Twitter все еще существует с пустыми разделениями твитов? или вообще нет разделителей твитов, когда он перестает отображать информацию?

3. виджет вообще не вставляет никаких divs или iframes при сбое

4. Я чувствую, что проблема не столько в веб-сайте, сколько в Twitter. Я пытался включить этот виджет примерно на дюжину других веб-сайтов, и каждый из них видел те же результаты.

Ответ №1:

Сначала используйте подходящий прокси-сервер для записи http для вашей ОС (Fiddler2 отлично подходит, если вы используете Windows), сдвигайте F5 на странице, пока не получите ошибку.

Фильтруйте журнал для хостов widgets.twimg.com или api.twitter.com … Это диагностирует точку сбоя, потому что:

  1. Если js (или css) запрашивает widgets.twimg.com сбой (найдите 404 или усеченный текст), затем javascript не удалось выполнить выборку. Маловероятно, поскольку файлы должны быть статическими.
  2. Если api.twitter.com запрос отсутствует, значит, javascript не удалось запустить.
  3. Если api.twitter.com запрос выполняется, но в ответе происходит сбой (неправильный код ответа или ответ выглядит неудачно), после чего api twitter не может предоставить вам канал.

Для обнаружения 1 в javascript вы можете обнаружить сбой загрузки, используя тайм-аут, и при загрузке проверить, что он загружен (простая проверка заключается в том, что window.twttr существует — однако это не лучший тест, потому что он устанавливается поверх javascript, поэтому только подтверждает, что синтаксис javascript был действительным и начал выполняться). (Может потребоваться onreadystate для определения загрузки для IE?)

 <script src="http://widgets.twimg.com/j/2/widget.js" onload="twitterloaded()"></script>
  

Для обнаружения 2 запустите страницу с помощью отладчика.

Для 3, при беглом взгляде на код, похоже, что код повторяет запросы к api Twitter (возможно, вы захотите посмотреть настройки конфигурации для api), и похоже, что есть переменные api, чтобы проверить, все ли запущено, например TWTR.Widget.isLoaded _isRunning , и _hasOfficiallyStarted .