Javascript Twitter小部件突然停止工作
我使用Twitter的Javascript Twitter小部件突然停止工作,javascript,angularjs,twitter,twitter-widget,Javascript,Angularjs,Twitter,Twitter Widget,我使用Twitter的widgets.js在Angular应用程序的页面上嵌入了一些推文。他们已经工作很长时间了。我今天注意到他们突然停止了工作。我一直在尝试调试这个问题,但无论我怎么做,我似乎都无法加载推文。控制台中没有错误。如果我从控制台手动初始化Tweets,代码似乎正常执行。我可以通过在then函数中的控制台上记录一些东西来验证这一点,该函数只有在twttr.widgets.createTweet()返回的承诺得到解决时才应该调用 在我的application.html.erb中,我有以
widgets.js
在Angular应用程序的页面上嵌入了一些推文。他们已经工作很长时间了。我今天注意到他们突然停止了工作。我一直在尝试调试这个问题,但无论我怎么做,我似乎都无法加载推文。控制台中没有错误。如果我从控制台手动初始化Tweets,代码似乎正常执行。我可以通过在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>
如果我在$timeout
块中插入调试器
,我可以看到angular.element('#post_uuu'+$scope.post.id)
从DOM返回有效的div
。如果我去我的账户,我也可以确认我的推特在推特上
这个设置已经运行了一段时间了。我没有对它做任何更改。事实上,几个小时前它还在工作!我想知道的是如何调试它并找出它突然停止工作的原因。我检查了Twitter API的状态,它说它在过去的24小时内有100%的正常运行时间
更新
我设法用一种新的方式再现了这个问题。据我所知,我用于测试的帐户中的推文似乎有问题。正如您在Fiddle中所看到的,我指定了两个Tweet ID-tweetA
和tweetB
,然后将它们嵌入其中。第一个是我的,无法加载。第二个负载很好。你最近有过吗?是的,这就是问题所在。我团队中的其他人将帐户设置为私人帐户,但没有说任何话。我以为我疯了。你最近有吗?是的,这就是问题所在。我团队中的其他人将帐户设置为私人帐户,但没有说任何话。我以为我疯了。
<div class="fade" ng-show="!loading" ng-if="post.provider === 'twitter'" id="{{'post_' + post.id}}"></div>
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);
};
};