2011-06-17 39 views
6

Tôi đã chụp danh sách dữ liệu từ trang bằng Greasemonkey.Lưu trữ vào tệp bằng JavaScript/GreaseMonkey

GM Script

var hit = GM_getValue("hit") || 0; 
var _url = "http://localhost:8080/test?p=$$pageNo$$"; 
_url = _url.replace("$$pageNo$$", hit); 
GM_setValue("hit", ++hit); 
if(hit <= 100) { 
window.location.href = _url; 
} 

Kịch bản này sẽ chạy cho thời gian thứ n và chụp < 10K dữ liệu, bây giờ tôi phải đối mặt với vấn đề trong việc lưu trữ các dữ liệu bị bắt trong một số tập tin. Bất cứ ai cũng có bất kỳ ý tưởng về cách chúng tôi có thể lưu trữ các dữ liệu bị bắt vào tập tin/repo?

Cảm ơn - Viswanathan G

+0

bản sao có thể có của [Lưu tệp bằng Greasemonkey] (http://stackoverflow.com/questions/2951149/save-file-using-greasemonkey) –

Trả lời

10

Không, không thể viết nó vào một tập tin, nhưng nếu bạn đang thực sự chán, bạn có thể gửi nó cho http://pastebin.com (hoặc bất kỳ URL khác mà chấp nhận một yêu cầu POST với một bó dữ liệu).

GM_xmlhttpRequest({ 
    method: "POST", 
    url: "http://pastebin.com/post.php", 
    data: <your data here>, 
    headers: { 
    "Content-Type": "application/x-www-form-urlencoded" 
    }, 
    onload: function(response) { 
    alert("posted"); 
    } 
}); 

Lưu ý bạn cần có tài khoản pastebin để sử dụng API.


Nếu bạn thực sự cần phải viết một tập tin vào hệ thống tập tin địa phương của bạn, hãy chạy một máy chủ web trên máy tính để bàn của bạn, và sau đó lưu kết quả của một http request PUT vào đĩa.

+0

Ý tưởng khá hay của nó. Nhưng nếu tôi đang sử dụng xyz.com, có thể gửi xmlHttpRequest trong miền chéo không? – gviswanathan

+1

@gviswanathan Lưu ý đối tượng 'GM_xmlhttpRequest' tôi đang sử dụng? Đó là phép thuật cho phép tôi gửi dữ liệu ** ở bất cứ đâu **. – ironchefpython

5

Một giải pháp rất nhanh và dễ dàng là sử dụng FileSaver.js:
1) Thêm dòng sau vào == UserScript == phần của kịch bản Greasemonkey bạn

// @require  https://raw.githubusercontent.com/eligrey/FileSaver.js/master/FileSaver.js 

2) Thêm 2 dòng sau đây của mã để kịch bản GM

var blob = new Blob(["Hello, world!"], {type: "text/plain;charset=utf-8"}); 

saveAs(blob, "hello world.txt"); 


dụ mã này sẽ hiển thị một hộp thoại để tải về một tập tin có tên "hello world.txt" có chứa dòng chữ "Hello, world!". Chỉ cần thay thế bằng tên tệp và nội dung văn bản bạn chọn!

Các vấn đề liên quan