1

ユーザーが「Enter」キーを押したときにツイートを送信できる Greasemonkey スクリプトを作成しようとしています。シンプルな HTML ページでこれがうまく動作するようになりました (このサイトのいくつかの優れたヒントの助けを借りて)。ただし、Twitter ページでコードを使用しようとすると、ツイートが現在作成されていない場合にのみアラートが発生します。

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() で最初から新しいツイート ウィンドウが読み込まれていないことに関係しているのでしょうか。考え?

4

1 に答える 1

0

この投稿のおかげでわかりました。また、完全な Greasemonkey スクリプトをここに投稿しました。

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  
        }
    }           
}
于 2012-04-17T14:14:23.650 に答える