1

我正在尝试创建一个 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 回答