#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 … Это диагностирует точку сбоя, потому что:
- Если js (или css) запрашивает widgets.twimg.com сбой (найдите 404 или усеченный текст), затем javascript не удалось выполнить выборку. Маловероятно, поскольку файлы должны быть статическими.
- Если api.twitter.com запрос отсутствует, значит, javascript не удалось запустить.
- Если 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
.