2012-04-14 10 views
1

Ich versuche ein Greasemonkey-Skript zu erstellen, das einen Tweet senden kann, wenn ein Benutzer die Eingabetaste drückt. Ich habe das auf einer einfachen HTML-Seite (mit Hilfe einiger ausgezeichneter Tipps auf dieser Seite) gut gemacht. Wenn ich jedoch versuche, den Code auf meiner Twitter-Seite zu verwenden, wird die Warnung nur ausgelöst, wenn ein Tweet nicht gerade erstellt wird.Senden Sie einen Tweet mit der Eingabetaste (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"); 
    } 
} 

Mein nächster Gedanke war, für ein spezifischeres Tastendruckereignis zu prüfen. Also habe ich versucht Tests für ein wichtiges Ereignis in der neuen tweet TextArea-:

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

... aber dieses Ereignis scheint nie zu schießen. Ich habe auch versucht, das Element nach Tag zu greifen:

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

... aber nicht dort auch nicht. Ich frage mich, ob das mit der Tatsache zu tun hat, dass das neue Tweet-Fenster nicht von Anfang an bei window.onload() geladen wird. Gedanken?

+0

könnten Sie Ihr vollständiges GM-Skript posten? – RASG

Antwort

0

Ich habe es dank this post. Ich habe auch das komplette Greasemonkey-Skript here gepostet.

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