2013-03-09 21 views
6

Tôi đang sử dụng Tampermonkey (giống như Greasemonkey, nhưng dành cho Chrome) để tạo tập lệnh. Ý tưởng là dán văn bản tôi viết vào Pastebin. Văn bản được viết trên trang web khác. Tôi thấy tôi có thể làm điều đó bằng cách sử dụng GM_xmlhttpRequest, nhưng nó không hoạt động. Đây là mã của tôi:Cách dán văn bản trong Pastebin bằng cách sử dụng 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(); 
    } 
}); 

Tôi chắc chắn hai dòng cuối cùng không hoạt động đúng cách, nhưng tôi không biết tại sao. Hàm đầu tiên hoạt động hoàn hảo.

Tôi đang làm gì xấu? Làm thế nào tôi có thể sửa chữa nó?

Cảm ơn bạn! =)

Trả lời

5

Tôi đã phát triển một API đơn giản thực hiện chính xác những gì bạn muốn.

Includes : Persist BETA

Pastebin có một API, nhưng nó hiện không hỗ trợ bài viết chỉnh sửa.
Đó là lý do tại sao tôi cần tạo hai "dịch vụ" khác nhau cụ thể cho pastebin ... PASTEBIN và PASTEBIN2

Nếu bạn không cần chỉnh sửa, hãy sử dụng PASTEBIN. Nếu không, hãy sử dụng PASTEBIN2.

Điều đầu tiên bạn cần là Unique Developer API Key.
Sau đó, bạn sẽ cần một số User API Key.

Dưới đây là một số ví dụ về việc sử dụng kịch bản của tôi:

Tạo một bài viết mới

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

Chỉnh sửa bài hiện

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

Đọc một bài hiện

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

Cảm ơn bạn! Nó hoạt động thực sự tốt. Tuy nhiên tôi có một số câu hỏi: tôi có thể dán bột nhão tư nhân? Và, chức năng bắt đầu khi bạn tải trang. Làm cách nào tôi có thể gọi nó khi tôi nhấn phím cách hoặc nhập khóa? – VictorSeven

+0

Có, tôi khuyên bạn nên đọc [Pastebin API] (http://pastebin.com/api#7). Sau đó, thêm thông số mong muốn của bạn vào "dữ liệu". – w35l3y

+0

PASTEBIN hoạt động nhưng việc chỉnh sửa bằng PASTEBIN2 (cùng dev và khóa người dùng) sẽ gặp lỗi trong bảng điều khiển: Array [2] 0: "request.error – Sint