2017-07-21 7 views
0

リンク:つぶやきボタンがクリックされるとcodepen.io/neel111/pen/dRBQNY?editors=1010Twitterの共有ボタン癖

それはツイートする事前に選択されたテキストで、ツイッターでツイートするページにリダイレクト。ページがで予め選択されたテキスト、その後/リフレッシュロードされた後つぶやきボタンを初めてクリックしたときに

//-------------quotes-------- 
    (function(){ 

     window.addEventListener("load", makeRequest); 

     function makeRequest(mk){ 
     document.getElementsByClassName("buttonQ")[0].addEventListener("click", makeRequest); 
     function reqListener(rl) { 
      if(httpR.readyState === XMLHttpRequest.DONE) { 
      var quote; 
      if(httpR.status === 200) { 
       quote = JSON.parse(httpR.responseText); 
       document.getElementsByClassName("quote")[0].innerHTML = quote[0].body; 
      } else { 
       alert("There was a problem with the request!") 
      } 
      } 
     }  
     var httpR; 
     httpR = new XMLHttpRequest(); 
     httpR.onreadystatechange = reqListener 
     httpR.open("GET", "https://quote-api.glitch.me/pull/1", true); 
     httpR.send(); 
     } 

     //----------------------tweet------------------- 

    window.addEventListener("load", function() { 
     document.getElementsByClassName("buttonT")[0].addEventListener("click", tweetEvent); 
    }) 
     function tweetEvent(twt) { 
     //twt.preventDefault(); 
     document.getElementsByClassName("quote")[0].normalize(); 
     var tweetBody = document.getElementsByClassName("quote")[0].childNodes[0].nodeValue; 
     var URLBase = document.getElementsByClassName("twitter-share-button")[0].getAttribute("href"); 
     var URLExtended = URLBase + "?hashtags=quotes&text=" + encodeURIComponent(tweetBody); 
     document.getElementsByClassName("twitter-share-button")[0].setAttribute("href", URLExtended); 
     } 

    })(); 

癖:
JavaScriptコードがあるが、単に迅速な一見のための下に与えられている使用しましたつぶやきにリダイレクトページが
Preselected_text(quote)_from_the_main_page #tweet

あるしかし、最初にクリックした後、毎回つぶやきボタンは、つぶやきにリダイレクトページで事前に選択されたテキストをクリックされている
Preselected_text(quote)_from_the_main_page?hashtags=quotes #quotes

どこが間違っているのですか?

答えて

1

だから、問題は、アンカータグのhrefを変更して、変更されたhrefをdomに挿入することだと思います。私が代わりにやることは、ボタンの中を取り除き、あなたのようなURLを構築することです。domの中の何かを変更するのではなく、window.open(extendedUrl)を呼び出します。このような

何かあなたが始める必要があります。

window.addEventListener("load", function() { 
    document.getElementsByClassName("buttonT")[0].addEventListener("click", tweetEvent); 
}) 
    function tweetEvent(twt) { 
    //twt.preventDefault(); 
    document.getElementsByClassName("quote")[0].normalize(); 
    var tweetBody = document.getElementsByClassName("quote")[0].childNodes[0].nodeValue; 
    var url = "https://twitter.com/intent/tweet?hashtags=quote&text="+encodeURIComponent(tweetBody); 
    return window.open(url); 
    } 

}) 

あなたは私がURLの構築を簡素化し、新しいウィンドウ/タブでURLを開くであろうwindow.openのために結果のURLに合格している見ることができるように(ブラウザのユーザー設定に応じて...詳細はhereを参照してください)。

+0

私はそれを得ます。しかし、もし何かの理由で私がした唯一の方法でアプローチしなければならなかったら、どうすればそれを解決するのだろうか。あなたが表示したこのコードが動作すれば、なぜ私は使用しなかったのですか?論理的には両方とも同じでマシンは論理で動作するので、実際に何が起こっているのか知るにはあまりにも興味があります。私のアプローチで変わったことを修正して理解するのを助けてください。 – Neel

+0

しかし、最初のつぶやきの後には、次回にそれを修正する前のhrefをリセットしないでください(最高で不便なページを更新しない限り)既に変更されたURLの最後に追加情報を追加する共有をクリックします。私のアプローチは、ボタンをクリックするたびに新しいURLを作成します。 –

+0

ええ、私はそれを持っています。もう一度要点は、あらかじめ選択されたテキストに '?hashtags = quotes&text ='という余分なテキストが1つしかないということです。共有ボタンを10回クリックすると、 '?hashtags = quotes&text ='だけでなく、10回もテキストを貼り付ける必要があります。あらかじめ選択されているテキスト全体が、ボタンがクリックされた回数 – Neel

関連する問題