2012-04-14 2 views
1

ユーザーが 'Enter'キーを押したときにツイートを送信できるGreasemonkeyスクリプトを作成しようとしています。私はこれを、単純なHTMLページでうまく動作させるようにしました(このサイトのいくつかの優れたヒントの助けを借りて)。しかし、自分のツイッターページでコードを使用しようとすると、ツイートが現在作成中でない場合にのみ警告が発せられます。'Enter'キー(Greasemonkey)を使ってツイートを送信する

document.onkeyup = function(event){     
    var keyCode;  
    if (window.event) // IE/Safari/Chrome/Firefox(?) 
    { 
     keyCode = event.keyCode; 
    } 
    else if (event.which) // Netscape/Firefox/Opera 
    { 
     keyCode = event.which; 
    } 

    if (keyCode == 13){ 
    alert("Enter pressed"); 
    } 
} 

私の次の考えは、より具体的なキー押しイベントをテストすることでした。そこで、私は新しいツイートテキストエリア内でキーイベントをテストしようとしました:

document.getElementsByClassName("twitter-anywhere-tweet-box-editor")[0].onkeyup = function(event) 

...このイベントは発生しません。私はまた、タグで要素をつかんでみようとしました:

document.getElementsByTagName("textarea")[0].onkeyup = function(event) 

...でも、そこにはダイスがありません。これは、新しいツイートウィンドウがwindow.onload()のget-goから読み込まれないという事実と関係があるのだろうかと思います。思考?

+0

フルGMスクリプトを投稿することはできますか? – RASG

答えて

0

私はthis postのおかげでそれを得ました。また、Greasemonkeyのフルスクリプトhereを投稿しました。

setInterval (function() { checkForTweetbox(); }, 500); 

function checkForTweetbox() { 
    var tweetbox = document.querySelector ('div.tweet-box textarea'); //check for new tweet window 
    if (tweetbox) { 
     if (! tweetbox.weHaveProcessed) { 
      tweetbox.weHaveProcessed = true; 
//   alert ('New tweet-box found!'); 
     } 
    } 
    tweetbox.onkeydown = function(event){ 
     if(event.keyCode == 13){          //13 = Enter keycode 
      document.querySelector ('a.primary-btn').click();   //there must be at least one character in the textarea 
     } 
    }   
} 
関連する問題