使用Greasemonkey / Tampermonkey保存数据以便以后检索

时间:2015-12-05 06:04:58

标签: javascript html database greasemonkey tampermonkey

我正在开展一个需要网站数据的项目。该数据的问题在于它被组织成许多不同的网页,其中URL中包含序列号。为了解决这个问题,我在Tampermonkey中编写了一个简单的脚本,它循环遍历这些页面并在脚本中的字符串变量中获取数据。

现在出现了真正的问题,我该如何存储这些数据。我知道我无法写入我的电脑上的文件,但可以将数据显示在浏览器的单独选项卡上,这样我就可以在循环完成后将其复制并粘贴到本地文件中?我希望在每个循环中附加一个字符串

我不想使用GM_setValue,因为我希望原始文本格式的数据(如.txt文件)

但是,如果可以在不使用外部库的情况下将其直接写入我的PC上的文件中,那么这将是首选。

1 个答案:

答案 0 :(得分:7)

  

我知道我无法写入PC上的文件

这对你来说是个好消息:是的,你可以!

var a = document.createElement("a");
a.href = "data:text,Hello World!";   //content
a.download = "Hello.txt";            //file name
a.click();

http://jsfiddle.net/DerekL/jgfhwfL0/

首先打开您的本地主页,master.htmlhttp://localhost:8080/master.html):

<html>
    <head>
        <script>
            window.addEventListener("load", function(){
                //This is just like working with threads but in JavaScript
                if(location.search.length){
                    //receiver
                    var query = decodeURIComponent(location.search.slice(1));
                    var data = JSON.parse(query).value;

                    //handle data
                    localStorage.storage = +localStorage.storage + data;

                    location.href = "about:blank";  //exit
                }else{
                    //master
                    sum = document.getElementById("sum"); 
                    sum.innerText = localStorage.storage = "0";

                    window.addEventListener("storage", function(){
                        //data received from receiver
                        sum.innerText = localStorage.storage;
                    });
                }
            });
        </script>
    </head>
    <body>
        Sum: <span id="sum"></span>
    </body>
</html>

然后您可以开始在任何网页中向其发送数据:

var frame = document.createElement("iframe");
frame.src = 'http://localhost:8080/master.html?{"value":90}';    //port 8080
document.body.appendChild(frame);

总和计数器应在收到数据后自动更新。