我正在开展一个需要网站数据的项目。该数据的问题在于它被组织成许多不同的网页,其中URL中包含序列号。为了解决这个问题,我在Tampermonkey中编写了一个简单的脚本,它循环遍历这些页面并在脚本中的字符串变量中获取数据。
现在出现了真正的问题,我该如何存储这些数据。我知道我无法写入我的电脑上的文件,但可以将数据显示在浏览器的单独选项卡上,这样我就可以在循环完成后将其复制并粘贴到本地文件中?我希望在每个循环中附加一个字符串
我不想使用GM_setValue
,因为我希望原始文本格式的数据(如.txt
文件)
但是,如果可以在不使用外部库的情况下将其直接写入我的PC上的文件中,那么这将是首选。
答案 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.html
(http://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);
总和计数器应在收到数据后自动更新。