2013-03-09 10 views
6

Sto usando Tampermonkey (lo stesso di Greasemonkey, ma per Chrome) per creare uno script. L'idea è di incollare il testo che scrivo in Pastebin. Il testo è stato scritto in un altro sito web. Ho visto che posso farlo usando GM_xmlhttpRequest, ma non funziona. Questo è il mio codice:Come incollare il testo in Pastebin usando 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(); 
    } 
}); 

Sono sicuro che le ultime due linee non funzionano correttamente, ma io non so perché. La prima funzione funziona perfettamente.

Cosa sto facendo male? Come posso ripararlo?

Grazie! =)

risposta

5

Ho sviluppato una semplice API che fa esattamente quello che vuoi.

Includes : Persist BETA

Pastebin ha un'API, ma attualmente non supporta la modifica post.
Ecco perché ho dovuto creare due diversi "servizi" specifici per pastebin ... PASTEBIN e PASTEBIN2

Se non è necessario modificare, utilizzare PASTEBIN. Altrimenti, utilizzare PASTEBIN2.

La prima cosa di cui avrete bisogno è uno Unique Developer API Key.
Quindi è necessario un User API Key.

Ecco alcuni esempi di utilizzo del mio script:

Creazione di un nuovo post

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

Modifica di un post esistente

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

lettura un post esistente

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

Grazie! Funziona davvero bene. Tuttavia ho alcune domande: posso pubblicare paste private? E, la funzione inizia quando si carica la pagina. Come posso richiamarlo quando preme la barra spaziatrice o il tasto Invio? – VictorSeven

+0

Sì, ti consiglio di leggere [API Pastebin] (http://pastebin.com/api#7). Quindi aggiungi i parametri desiderati a "dati". – w35l3y

+0

PASTEBIN funziona ma la modifica con PASTEBIN2 (stesse chiavi dev e user) ha un errore nella console: Array [2] 0: "request.error – Sint