Твиттер внезапно перестал работать
У меня есть несколько твитов, встроенных в страницу моего приложения Angular с помощью твиттера widgets.js
, Они работают уже довольно давно. Сегодня я заметил, что они вдруг перестали работать. Я пытался отладить проблему, но я не могу загрузить твиты, что бы я ни пытался. В консоли нет ошибок. Если я вручную инициализирую твиты из консоли, код, кажется, выполняется нормально. Я могу убедиться в этом, войдя в консоль then
функция, которая должна вызываться только тогда, когда обещание возвращается twttr.widgets.createTweet()
решено.
В моем application.html.erb
У меня есть следующее:
<!-- Twitter oEmbed Widget -->
<script>
window.twttr = (function(d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0],
t = window.twttr || {};
if (d.getElementById(id)) return t;
js = d.createElement(s);
js.id = id;
js.src = "https://platform.twitter.com/widgets.js";
fjs.parentNode.insertBefore(js, fjs);
t._e = [];
t.ready = function(f) {
t._e.push(f);
};
return t;
}(document, "script", "twitter-wjs"));
</script>
В моем шаблоне директивы я указываю div с идентификатором Tweet следующим образом:
<div class="fade" ng-show="!loading" ng-if="post.provider === 'twitter'" id="{{'post_' + post.id}}"></div>
Затем в контроллере моей директивы я инициализирую виджет после задержки, чтобы убедиться, что DOM готов, вот так:
function loadWidget() {
if($scope.post.provider === 'twitter') {
$timeout(function() {
if(angular.element('#post_' + $scope.post.id).find('iframe').length === 0) {
twttr.widgets.createTweet($scope.post.twitter_id, document.getElementById('post_' + $scope.post.id)).then(function(resp) {
$timeout(function() {
$scope.loading = false;
})
});
};
}, 2500);
};
};
Если я вставлю debugger
в моем $timeout
блок я вижу, что angular.element('#post_' + $scope.post.id)
возвращает действительный div
из DOM. Я также могу подтвердить, что мой твит находится в Твиттере, если я зайду в свой аккаунт.
Эта установка работала нормально некоторое время. Я не сделал никаких изменений в этом. На самом деле это работало всего несколько часов назад! Я хотел бы знать, как я могу отладить его и выяснить, почему он вдруг перестал работать. Я проверил состояние Twitter API, и он говорит, что у него было 100% безотказной работы в течение последних 24 часов.
Обновить
Мне удалось воспроизвести проблему в jsFiddle. Судя по тому, что я могу сказать, это похоже на проблему с твитами из моей учетной записи, которую я использую для тестирования. Как вы можете видеть в скрипте, я указываю два идентификатора твита: tweetA
а также tweetB
- а затем вставлять их обоих. Первый, который мой, не загружается. Второй загружается просто отлично.