2016-04-25 36 views
0

我有一個基本的Twitter的Widget這樣在網頁上:Twitter的小工具並不總是加載

<div class="twitter mobile-hide"> 
<a class="twitter-timeline" href="https://twitter.com/TheStickyNoteEd" data-widget-id="722809724224151554">Tweets by @TheStickyNoteEd</a> 
<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+"://platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script> 
</div> 

有時,小部件就會消失只留下一個鏈接到Twitter的。我只是在我的硬盤上本地運行網頁。它似乎並沒有涉及域限制,因爲我也在這裏部署它:http://beta.thestickynote.com/並且問題繼續發生。

該網站可能會要求您輸入用戶名/密碼,只需使用該通用訪客登錄即可。

用戶:公測 通行證:thestickynote

什麼導致這個問題呢?

回答

1

此問題可能是由您的瀏覽器的域限制導致的,以防止跨站腳本。在本地運行文件時,瀏覽器有時會將每個文件視爲自己的「域」,因此它不會允許該頁面從Twitter服務器中繪製數據。

發生這種情況時,回退是顯示鏈接到你的Twitter帳戶,通過標記的部分證明:

這個問題可能與

<a class="twitter-timeline" href="https://twitter.com/TheStickyNoteEd" data-widget-id="722809724224151554">Tweets by @TheStickyNoteEd</a> 

更新您的使用Turbolinks。 Turbolinks是一個Javascript庫,它可以加快頁面加載速度,但它似乎打破了Twitter小部件的功能,導致出現後備鏈接。

更新2

當一個頁面是由AJAX獲取未加載內嵌的JavaScript,這是造成小部件不加載。

+0

我剛剛部署將我的代碼粘貼到Rails應用程序中(主應用程序被寫入除widget外的rails)並將其部署到生產服務器。問題似乎還在繼續。 – AgentSpyname

+0

@AgentSpyname您能回覆鏈接到生產服務器嗎? –

+0

@AgentSpyname我認爲在這種情況下,問題是完整的域名未註冊爲Twitter部件的一部分。你可以在Twitter註冊beta.thestickynote.com並將新的小部件放入網站嗎? –

0

我在創建widget時遇到了類似的問題。在Twitter開發論壇上諮詢之後,我閱讀了一個解決方案,在腳本的末尾添加了twttr.widgets.load();,我發現您的小部件代碼沒有。也就是說,嘗試使用

<div class="twitter mobile-hide"> 
<a class="twitter-timeline" href="https://twitter.com/TheStickyNoteEd" data-widget-id="722809724224151554">Tweets by @TheStickyNoteEd</a> 
<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+"://platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs"); twttr.widgets.load();</script> 
</div>