2012-04-14 2 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"); 
    } 
} 

Следующая мысль состояла в том, чтобы проверить более конкретное событие нажатия клавиши. Так что я попытался тестирование на ключевое событие в рамках нового чирикать: текстовое поле

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

... но это событие кажется, никогда не срабатывает. Я также попытался схватить элемент по тегу:

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

... но не кости есть. Интересно, связано ли это с тем, что новое окно твита не загружается из get-go в window.onload(). Мысли?

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