используя JavaScript для локального сохранения информации - PullRequest
2 голосов
/ 18 ноября 2011

Я хочу написать скрипт greasemonkey для очистки сайтов и локального сохранения данных. Могу ли я использовать JavaScript для сохранения информации, собранной локально?

Ответы [ 5 ]

4 голосов
/ 21 июля 2012
window.location ="data:application/octet-stream," + encodeURI(JSON.stringify(translations.custom));

Вот как скрипт перевода Pixiv сохраняет пользовательские добавленные переводы (которые в нем не прописаны).Вы просто получаете диалоговое окно сохранения файлов, как если бы вы нажали на прямую ссылку.

Translations.custom - это просто объект в формате JSON (var a = {b: 1};).

У меня естьЯ не знаю, как вам нужно отформатировать ваши данные, хотя, если они не в JSON, но вы можете поэкспериментировать с этим, я думаю.

Альтернативным подходом будет замена html всего документа и тогда просто сохраните страницу.

4 голосов
/ 18 ноября 2011

Локальное хранилище - ваш выбор для современных приложений!

2 голосов
/ 18 ноября 2011

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>
2 голосов
/ 18 ноября 2011

Я предлагаю использовать метод JQuery ' data , поскольку он обеспечивает кроссплатформенную поддержку и не имеет четкого ограничения на объем информации, которую вы можете хранить.

За кулисами

Внутренне, jQuery создает пустой объект (называемый $ .cache для любопытных), который используется для хранения значений, которые вы устанавливаете с помощью метода данных.Каждому элементу DOM, к которому вы добавляете данные, присваивается уникальный идентификатор, который используется в качестве ключа в объекте $ .cache.jQuery не хранит только созданные пользователем данные в этом кеше.Он также хранит внутреннюю информацию и функции обработки событий, которые вы присоединяете с помощью live (), bind () и делегата ().Централизованное хранение данных делает кодовую базу jQuery гораздо более надежной и без ошибок, что может всем нам помочь.

Справка: Метод данных jQuery - как и зачем его использовать

1 голос
/ 18 ноября 2011

Использование файлового объекта Mozilla.Документы MDN: https://developer.mozilla.org/en/Code_snippets/File_I%2F%2FO

РЕДАКТИРОВАТЬ: это проще, но только для Chrome http://www.html5rocks.com/en/tutorials/file/filesystem/

...