2011-06-17 17 views
6

Mam przechwyconą listę danych ze strony za pomocą Greasemonkey.Przechowywanie w pliku przy użyciu 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; 
} 

Skrypt ten działa dla n-ty raz i uchwycić < 10K danych, teraz stoi problem w przechowywaniu przechwycone dane w jakimś pliku. Ktoś ma pojęcie o tym, w jaki sposób możemy przechowywać przechwycone dane w pliku/repo?

Dzięki - Viswanathan G

+0

możliwy duplikat [Zapisz plik przy użyciu Greasemonkey] (http://stackoverflow.com/questions/2951149/save-file-using-greasemonkey) –

Odpowiedz

10

Nie, nie można zapisać go do pliku, ale jeśli jesteś naprawdę nudzi, można dodawać je do http://pastebin.com (lub dowolny inny adres URL, który akceptuje żądania POST z wiązka danych).

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

Uwaga: do korzystania z interfejsu API potrzebne jest konto pastebin.


Jeśli naprawdę trzeba zapisać plik w lokalnym systemie plików, uruchomić serwer WWW na pulpicie, a następnie zapisać wyniki żądanie HTTP PUT na dysk.

+0

To całkiem dobry pomysł. Ale jeśli używam xyz.com, czy możliwe jest wysłanie xmlHttpRequest w domenie krzyżowej? – gviswanathan

+1

@ gviswanathan Zwróć uwagę na obiekt 'GM_xmlhttpRequest', którego używam? To magia, która pozwala mi przesyłać dane ** w dowolnym miejscu **. – ironchefpython

5

Bardzo szybkie i łatwe rozwiązaniem jest użycie FileSaver.js:
1) Dodaj następujący wiersz do sekcji == == UserScript swojej skryptów Greasemonkey

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

2) Dodaje się następujące wiersze 2 kod do skryptu GM

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

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


Ten przykładowy kod powoduje wyświetlenie okna dialogowego, aby pobrać plik o nazwie „cześć world.txt” zawierający tekst „Hello, world!”. Po prostu zamień go na nazwę pliku i wybraną treść tekstową!

Powiązane problemy