2013-03-09 13 views
6

Używam Tampermonkey (tak samo jak Greasemonkey, ale w Chrome) do tworzenia skryptu. Chodzi o to, aby wkleić tekst, który piszę w Pastebin. Tekst został napisany na innej stronie internetowej. Widziałem, że mogę to zrobić za pomocą GM_xmlhttpRequest, ale to nie działa. To jest mój kod:Jak wkleić tekst w Pastebin za pomocą JavaScriptu

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

Jestem pewien, że te dwie ostatnie linie nie pracują prawidłowo, ale nie wiem dlaczego. Pierwsza funkcja działa idealnie.

Co robię źle? Jak mogę to naprawić?

Dziękujemy! =)

Odpowiedz

5

Opracowałem prosty interfejs API, który robi dokładnie to, co chcesz.

Includes : Persist BETA

Pastebin ma API, ale aktualnie nie obsługuje posty edycji.
Dlatego musiałem stworzyć dwie różne "usługi" specyficzne dla pastebin ... PASTEBIN i PASTEBIN2

Jeśli nie potrzebujesz edycji, użyj PASTEBIN. W przeciwnym razie użyj PASTEBIN2.

Pierwszą rzeczą, jakiej potrzebujesz, jest Unique Developer API Key.
Następnie będziesz potrzebować User API Key.

Oto kilka przykładów wykorzystania mojego skryptu:

Tworzenie nowego posta

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

edycji istniejącego stanowiska

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

Czytanie istniejący słupek

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

Dziękujemy! Działa bardzo dobrze. Mam jednak kilka pytań: czy mogę publikować prywatne wiadomości? Funkcja rozpoczyna się po załadowaniu strony. Jak mogę go wywołać po naciśnięciu klawisza spacji lub klawisza Enter? – VictorSeven

+0

Tak, polecam przeczytać [API Pastebina] (http://pastebin.com/api#7). Następnie dodaj żądane parametry do "danych". – w35l3y

+0

PASTEBIN działa, ale edycja za pomocą PASTEBIN2 (te same klucze programisty i użytkownika) powoduje błąd w konsoli: Array [2] 0: "request.error – Sint

Powiązane problemy