2013-03-09 12 views
6

Ich benutze Tampermonkey (das gleiche wie Greasemonkey, aber für Chrome), um ein Skript zu erstellen. Die Idee ist, den geschriebenen Text in Pastebin einzufügen. Der Text wurde auf einer anderen Website geschrieben. Ich sah, dass ich es mit GM_xmlhttpRequest tun kann, aber es funktioniert nicht. Dies ist mein Code:Einfügen von Text in Pastebin mit JavaScript

var charac = new Array(50); 
    var i =0 
function callkeydownhandler(evnt) { 

    var ev = (evnt) ? evnt : event; 
    var code=(ev.which) ? ev.which : event.keyCode; 
    charac[i]= code; 
     i++; 
} 
if (window.document.addEventListener) { 
    window.document.addEventListener("keydown", callkeydownhandler, false); 
} else { 
    window.document.attachEvent("onkeydown", callkeydownhandler); 
} 

GM_xmlhttpRequest({ 
    method: "POST", 
    url: "http://pastebin.com/post.php", 
    data: "user=mysuser&password=mypassword", //as you can imagine I use my credentials 
    headers: { 
    "Content-Type": "application/x-www-form-urlencoded" 
    }, 
    onload: function(response) { 
    alert("posted"); 
    document.getElementById("paste_code").value+=charac[i]; 
    document.getElementById("submit").click(); 
    } 
}); 

Ich bin sicher, dass die beiden letzten Zeilen nicht richtig funktionieren, aber ich weiß nicht, warum. Die erste Funktion funktioniert perfekt.

Was mache ich schlecht? Wie kann ich es reparieren?

Vielen Dank! =)

Antwort

5

Ich habe eine einfache API entwickelt, die genau das tut, was Sie wollen.

Includes : Persist BETA

Pastebin hat eine API, aber es derzeit nicht Bearbeitung Beiträge unterstützen.
Deshalb brauchte ich zwei verschiedene „Dienste“ spezifisch für Pastebin ... Pastebin und PASTEBIN2

erstellen Wenn Sie mit der Bearbeitung nicht benötigen, verwenden Pastebin. Andernfalls verwenden Sie PASTEBIN2.

Das erste, was Sie benötigen, ist ein Unique Developer API Key.
Dann benötigen Sie eine User API Key.

Hier sind einige Beispiele der Nutzung von meinem Skript:

einen neuen Beitrag

Persist.write({ 
    service : "PASTEBIN", 
    value : "...", 
    data : { 
     api_dev_key  : "...", 
     api_user_key : "...", 
    }, 
    onload : function (result) { 
     alert("http://pastebin.com/" + result.key); 
    } 
}); 

Bearbeiten eines vorhandenen Post

Persist.write({ 
    service : "PASTEBIN2", 
    mode : -1, // prepend 
    key  : "..." 
    value : "...", 
    data : { 
     api_dev_key  : "...", 
     api_user_key : "...", 
    }, 
    onload : function (result) { 
     alert("Post #" + result.key + "\nNew value: " + result.value); 
    } 
}); 

einen bestehenden Eintrag anlegen Lese

Persist.read({ 
    service : "PASTEBIN", 
    key  : "..." 
    data : { 
     api_dev_key  : "...", 
     api_user_key : "...", 
    }, 
    onload : function (result) { 
     alert("\nValue: " + result.value); 
    } 
}); 
+0

Vielen Dank! Es funktioniert wirklich gut. Ich habe jedoch einige Fragen: Kann ich private Pasten posten? Und die Funktion startet, wenn Sie die Seite laden. Wie kann ich es aufrufen, wenn ich die Leertaste drücke oder die Taste drücke? – VictorSeven

+0

Ja, ich empfehle Ihnen, die [Pastebin API] (http://pastebin.com/api#7) zu lesen. Fügen Sie dann Ihre gewünschten Parameter zu "Daten" hinzu. – w35l3y

+0

PASTEBIN funktioniert, aber die Bearbeitung mit PASTEBIN2 (gleiche Dev- und User-Keys) bekommt einen Fehler in der Konsole: Array [2] 0: "request.error – Sint