Twitter Intent链接未在新窗口中打开

时间:2012-12-14 20:06:32

标签: javascript twitter webintents

我创建了一个界面,允许人们通过网页发布某些人的推文。为此,我正在利用Twitter的网络意图。首先,页面有一个textarea,其中包含一个占位符推文,当用户单击“回复”按钮时,该推文作为文本参数传递,但范围已更改,以便用户应该能够在textarea中输入文本,单击按钮,并通过他们更新的推文看到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));


}
});

1 个答案:

答案 0 :(得分:0)

事实证明,有一种方法可以通过自己添加Javascript来解除对platform.twitter.com的依赖 - https://dev.twitter.com/docs/intents

关于间歇性的in_reply_to链接,由于某种原因,我所拥有的数据属性为在Django上下文中传递的tweet_id添加了1。我不知道为什么,但我继续重构我的代码只是动态添加文本,而不是推文ID,因为这不会改变。

现在一切正常。