我想写一个greasemonkey脚本来抓取网站并在本地保存数据,我可以使用javascript来保存本地收集的信息吗?
答案 0 :(得分:4)
Local storage是您选择现代应用的好方法!
答案 1 :(得分:4)
window.location ="data:application/octet-stream," + encodeURI(JSON.stringify(translations.custom));
这是Pixiv翻译脚本保存自定义添加的翻译(不会硬编码到其中)的方式。您只需获得一个文件夹对话框,就像您点击了直接链接一样。
Translations.custom只是一个JSON格式的对象(var a = {b:1};)。
我不知道您是如何格式化数据的,但如果它不在JSON中,但您可以尝试使用我的数据。
另一种方法是替换整个文档的HTML,然后再保存页面。
答案 2 :(得分:2)
我建议使用JQuery'data方法,因为它提供跨平台支持,并且它对您可以存储的信息量没有明确的限制。
幕后花絮
在内部,jQuery创建一个空对象(称为$ .cache 好奇的),用于存储您通过数据设置的值 方法。您向其添加数据的每个DOM元素都会分配一个唯一的ID 它用作$ .cache对象中的键。 jQuery不存储 仅缓存中的用户创建的数据。它还存储内部 您附加的信息和事件处理功能 live(),bind()和delegate()。集中数据存储使 jQuery的代码库更健壮,没有bug,我们都是 可以从中受益。
答案 3 :(得分:2)
java.lang.Object中 ↳android.webkit.CookieManager
或者你可以使用这种逻辑..
<html>
<head>
<script type="text/javascript">
function getCookie(c_name)
{
var i,x,y,ARRcookies=document.cookie.split(";");
for (i=0;i<ARRcookies.length;i++)
{
x=ARRcookies[i].substr(0,ARRcookies[i].indexOf("="));
y=ARRcookies[i].substr(ARRcookies[i].indexOf("=")+1);
x=x.replace(/^\s+|\s+$/g,"");
if (x==c_name)
{
return unescape(y);
}
}
}
function setCookie(c_name,value,exdays)
{
var exdate=new Date();
exdate.setDate(exdate.getDate() + exdays);
var c_value=escape(value) + ((exdays==null) ? "" : "; expires="+exdate.toUTCString());
document.cookie=c_name + "=" + c_value;
}
function checkCookie()
{
var username=getCookie("username");
if (username!=null && username!="")
{
alert("Welcome again " + username);
}
else
{
username=prompt("Please enter your name:","");
if (username!=null && username!="")
{
setCookie("username",username,365);
}
}
}
</script>
</head>
<body onload="checkCookie()">
</body>
</html>
答案 4 :(得分:1)
使用Mozilla的文件对象。 MDN文档:https://developer.mozilla.org/en/Code_snippets/File_I%2F%2FO
编辑:这更容易,但仅适用于Chrome http://www.html5rocks.com/en/tutorials/file/filesystem/