2012-12-14 104 views
1

我已經創建了一個界面,允許用戶通過某個網頁發送特定個人信息。爲此,我正在利用Twitter的網絡意圖。起初,頁面有一個textarea,它包含一個佔位符tweet,當用戶點擊一個Reply按鈕時,這個tweet被作爲文本參數傳遞,但是範圍已經改變,所以用戶應該能夠在textarea中輸入文本,點擊按鈕,然後查看Twitter彈出式窗口及其更新後的推文,因爲用戶測試表明,如果用戶無法編輯頁面上的內容,他們不太可能向用戶發送推文。Twitter有意鏈接無法在新窗口中打開

問題是,雖然此代碼確實更新了Twitter意向鏈接,但它似乎破壞了Twitter意向鏈接的某些功能。最值得注意的是,這些鏈接並不像通常那樣在一個小的彈出框中打開 - 而是替換當前頁面。此外,「in_reply_to」功能是間歇性的 - 某些應該包含推文回覆的鏈接不會,而其他鏈接則可以。

任何人都試圖做這樣的事情?如果是這樣,有什麼建議嗎?我現在處於虧損狀態。

的HTML(我們使用Django,因此模板邏輯):

<div class="response"> 
    {%if quote.tweet_id%} 
    <textarea id="twitter_response_text" class="has_tweet_id" maxlength="140">{{quote.twitter_handle}} {{quote.twitter_text_default}}</textarea>   
    <label for="twitter_response_text"><span></span></label>      
    <a class="hasReply" data-tweet-id="{{quote.tweet_id}}" href="https://twitter.com/intent/tweet?in_reply_to="><button value="respond" data-quote-id="{{quote.id}}"/><img src="{{STATIC_URL}}img/reply_arrow.png"> Reply</button></a> 
    {%else%} 
    <textarea id="twitter_response_text" maxlength="140">{{quote.twitter_text_default}}</textarea> 
    <label for="twitter_response_text"><span></span></label> 
    <a href="https://twitter.com/intent/tweet?text="><button value="reply" data-quote-id="{{quote.id}}" /><img src="{{STATIC_URL}}img/reply_arrow.png"> Reply</button></a> 
    {%endif%} 
</div> 

的Javascript:

$(".response a, .twitteraction a").on("click", function() { 

//get text from the textarea of the current slide 

var textarea = $(this).parents(".slide").find("#twitter_response_text") 
if (textarea.val() !== "") { 
    text = textarea.val(); 
} else { 
    text = textarea.text(); 
} 

//maybe we need the handle? 
// var handle = $(this).parents(".slide").find("#twitterhandle").text(); 

//get the link 
var link = $(this).attr("href"); 


//check to see if it needs reply link or regular 
if ($(this).hasClass("hasReply")) { 

//get the tweet id, stored as data attribute in the anchor 
var tweetId = $(this).data("tweet-id"); 

//construct the query with a twitter id but no handle 
var query = encodeURIComponent(tweetId) + "&text=" + encodeURIComponent(text) + "&related=ForecastFacts&original_referer=http://climatecliff.org/"; 

//add link to anchor 
$(this).attr("href", (link + query)); 

} else { 

//construct the query with text and related 
var query = encodeURIComponent(text) + "&related=ForecastFacts&original_referer=http://climatecliff.org/"; 

//add query to anchor 

$(this).attr("href", (link + query)); 


} 
}); 
+0

是'target =「_ blank」'夠好嗎? – 2012-12-14 20:12:27

+0

不 - 我希望!客戶特別需要彈出式窗口,因爲擔心打開新選項卡會使人不想在多人處發送推文。它也沒有解決爲什麼網絡意圖的預期行爲沒有發生的問題。 –

+1

告訴你的客戶,任何體面的瀏覽器都會捕獲'window.open()'作爲其反彈出系統的一部分... – 2012-12-14 20:15:19

回答

0

原來有一種方法,以消除platform.twitter的依賴。 com爲他們的Javascript自己添加它 - https://dev.twitter.com/docs/intents

關於間歇性in_reply_to鏈接,出於某種原因,我的數據屬性我加了1 twee正在Django上下文中傳遞的t_id。我不知道爲什麼,但我繼續重構我的代碼,只動態添加文本,而不是推特ID,因爲這不會改變。

現在一切正常。

相關問題