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