2012-04-14 81 views
1

我試圖創建一個Greasemonkey腳本,可以在用戶點擊'輸入'鍵時提交推文。我已經在一個簡單的HTML頁面上運行得很好(在本站的一些優秀技巧的幫助下)。但是,當我嘗試在我的Twitter頁面上使用代碼時,如果當前未撰寫鳴叫,則只會觸發警報。使用'輸入'鍵發送推文(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"); 
    } 
} 

我的下一個想法是測試一個更具體的按鍵事件。所以我嘗試在新的tweet textarea中測試一個關鍵事件:

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

......但是這個事件似乎從來沒有出現過。我也嘗試通過標籤來抓取元素:

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

...但沒有骰子。我想知道這是否與新的推文窗口沒有從window.onload()開始加載的事實有關。思考?

+0

你可以發佈你的完整的GM腳本嗎? – RASG 2012-04-17 02:08:31

回答

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 
     } 
    }   
}