1

我创建了一个界面,允许人们从网页上向某些人发推文。为此,我正在利用 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));


}
});
4

1 回答 1

0

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

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

现在一切正常。

于 2012-12-14T22:42:17.383 回答