使用'enter'键发送推文(Greasemonkey)

时间:2012-04-14 17:14:10

标签: javascript twitter textarea greasemonkey

我正在尝试创建一个Greasemonkey脚本,当用户点击“enter”键时,该脚本可以提交推文。我已经在一个简单的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");
    }
}   

我的下一个想法是测试更具体的按键事件。所以我尝试在新推文textarea中测试一个关键事件:

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

......但是这个事件似乎永远不会发生。我也尝试按标签抓取元素:

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

......但也没有骰子。我想知道这是否与新的推文窗口没有从window.onload()的get-go加载这一事实有关。想法?

1 个答案:

答案 0 :(得分: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  
        }
    }           
}