Web版非公式RT ブックマークレット

Web版非公式RT ブックマークレット Chrome のみ動作確認。既存の不具合 : URLが含まれるツイートがあるとダメ Ver 0.01

Web版非公式RT ブックマークレット Chrome のみ動作確認。既存の不具合 : URLが含まれるツイートがあるとダメ Ver 0.01

  • タグ:
  • タグはありません
/* Web版非公式RT ブックマークレット Chrome のみ動作確認
   WebInformalRT
   Version   : 0.01 (2012/1/6)
   Copyright : (c) 2012 inovia (http://twitter.com/#!/hinekure_inovia)
   License   : MIT license (http://www.opensource.org/licenses/mit-license.php)
   既存の不具合 : URLが含まれるツイートがあるとダメ
*/

// ツイートの投稿エリア取得
var TweetArea = GetClassName(document,'textarea','twitter-anywhere-tweet-box-editor');
// 一番上の選択されたツイートを取得する
var TweetSelect = GetClassName(document,'div','js-stream-item stream-item stream-item expanding-stream-item open');
var Node = TweetSelect;
// ユーザーネームを取得
var UserName = GetClassName(Node,'span','username js-action-profile-name');
// ツイートを取得
var Tweet = GetClassName(Node,'p','js-tweet-text');

// フォーカスを当てる
BoxClick(TweetArea);
// 反応しない場合があるのでタイマー登録します
timerID = setTimeout(function(){TweetWrite(TweetArea)},500);

// 投稿エリアに反映
function TweetWrite(TweetArea){
	// 念のためもう一度クリック
	BoxClick(TweetArea);
	TweetArea.value = "RT "+UserName.innerText+": "+Tweet.innerText;
	// キャレットを先頭に移動する
	TweetArea.setSelectionRange(0,0);
	clearTimeout(timerID);
}
// ツイートの投稿エリアにフォーカスを当てる
function BoxClick(TweetArea){
	var evt = document.createEvent("MouseEvents");
	evt.initEvent("click", false, true );
	TweetArea.dispatchEvent(evt);
	TweetArea.focus();
}
// クラス名から取得する関数
function GetClassName(_doc,tgname,clname) { 
var tag = _doc.getElementsByTagName(tgname);
     for (var i=0; i<tag.length; i++){
          if(tag[i].getAttribute('className') == clname){
               return tag[i];
          }else if ( tag[i].getAttribute('class') == clname ){
               return tag[i];
          }
     }
}