1

私は人々がウェブページから特定の個人にツイートできるようにするインターフェースを作成しました。そのために、私はTwitterのWebインテントを利用しています。最初、ページには、ユーザーが[返信]ボタンをクリックしたときにテキストパラメーターとして渡されたプレースホルダーツイートを含むテキストエリアがありましたが、スコープが変更され、ユーザーがテキストエリアにテキストを入力できるようになりました。ユーザーのテストでは、ページのコンテンツを編集できなかった場合、ユーザーがツイートする可能性が低いことがわかったため、ボタンをクリックして、更新されたツイートを含む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

自分でJavascriptを追加することで、platform.twitter.comへの依存関係を削除する方法があることがわかりました-https ://dev.twitter.com/docs/intents

断続的なin_reply_toリンクに関して、何らかの理由で、私が持っていたデータは、Djangoコンテキストで渡されていたtweet_idに1を追加していました。理由はわかりませんが、コードをリファクタリングして、ツイートIDではなくテキストのみを動的に追加するようにしました。これは変更されないためです。

今ではすべて正常に動作します。

于 2012-12-14T22:42:17.383 に答える