2013-03-09 49 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