我创建了一个界面,允许人们通过网页发布某些人的推文。为此,我正在利用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));
}
});
答案 0 :(得分:0)
事实证明,有一种方法可以通过自己添加Javascript来解除对platform.twitter.com的依赖 - https://dev.twitter.com/docs/intents
关于间歇性的in_reply_to链接,由于某种原因,我所拥有的数据属性为在Django上下文中传递的tweet_id添加了1。我不知道为什么,但我继续重构我的代码只是动态添加文本,而不是推文ID,因为这不会改变。
现在一切正常。