2013-03-09 52 views
6

我使用Tampermonkey(與Greasemonkey相同,但適用於Chrome)製作腳本。這個想法是將我寫入的文本粘貼到Pastebin中。該文本是寫在其他網站。我看到我可以使用GM_xmlhttpRequest來完成,但它不起作用。 這是我的代碼:如何使用JavaScript在Pastebin中粘貼文本

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

我敢肯定,最後兩行不能正常工作,但我不知道爲什麼。第一個功能很完美。

我在做什麼壞事?我該如何解決它?

謝謝! =)

回答

5

我開發了一個簡單的API,它完全符合你的需求。

Includes : Persist BETA

引擎收錄有一個API,但它目前不支持編輯帖子。
這就是爲什麼我需要創建特定於引擎收錄...引擎收錄和PASTEBIN2

兩個不同的「服務」。如果你不需要編輯,使用引擎收錄。否則,請使用PASTEBIN2。

您需要的第一件事是Unique Developer API Key
然後你需要一個User API Key

這裏是我的腳本中使用的一些例子:

創建一個新的職位

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

編輯現有崗位

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

讀取現有的職位

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

謝謝!它工作得很好。不過,我有一些問題:我可以發佈私人粘貼嗎? 而且,該功能在您加載頁面時開始。當我按空格鍵或輸入密鑰時,如何調用它? – VictorSeven 2013-03-09 22:31:58

+0

是的,我建議您閱讀[Pastebin API](http://pastebin.com/api#7)。然後將所需的參數添加到「數據」中。 – w35l3y 2013-03-10 13:23:16

+0

PASTEBIN可以工作,但用PASTEBIN2(相同的開發人員和用戶密鑰)進行編輯會在控制檯中發生錯誤:Array [2] 0:「request.error – Sint 2014-03-24 13:02:26