Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 06.01.2012, 19:58
Профессор
Посмотреть профиль Найти все сообщения от Livaanderiamarum
 
Регистрация: 25.12.2011
Сообщений: 786

localstorge ФУНКЦИЯ ДЛЯ РАБОТЫ!!!!!
(function(i){function e(a,c){if(null===c)return localStorage.removeItem(a),!0;c="function"==typeof c?"-"+c.toString().replace(/\s+/g," ").match(/function.*{(.*)}/)[1]:JSON.stringify(c);try{return localStorage.setItem(a,c),!0}catch(b){if(b==QUOTA_EXCEEDED_ERR)return console.log("Local storage overflowing"),!1}}function f(a,c){c=localStorage.getItem(a);return"-"===c[0]?(c=c.slice(1),Function(c)):JSON.parse(c)}function h(a,c){if(c)for(b in a){if(b in localStorage)break;e(b,a[b])}else for(var b in a)e(b,
a[b])}if(!localStorage)return console.log("localStorage not supported"),!1;window[i]=function(a,c){if(0==arguments.length){var b={},d;for(d in localStorage)b[d]=f(d);return b}if(1==arguments.length){if(null===a)return localStorage.clear(),!0;if("object"==typeof a)return h(a),!0;b=!1}else if(2==arguments.length){if("object"==typeof a)return h(a,c),!0;b=!0}var g=a.indexOf(".");if(-1==g)if(b)e(a,c);else return f(a);else if(0==g)if(b)for(d in localStorage)-1!=d.indexOf(a)&&d.indexOf(a)+a.length==d.length&&
e(d,c);else{b=[];for(d in localStorage)-1!=d.indexOf(a)&&d.indexOf(a)+a.length==d.length&&b.push(f(d));return b}else if(g==a.length-1)if(b)for(d in localStorage)0==d.indexOf(a)&&e(d,c);else{b=[];for(d in localStorage)0==d.indexOf(a)&&b.push(f(d));return b}else if(b)e(a,c);else return f(a);return!0}})
('storge') //сюда вводим имя функции которое нам приятнее юзать

/*
*  storge('keyName', value)  установить значение
*  storge('keyName')  получить значение
*  storge('keyName', null) удалить ключ
*  storge(null) очистить хранилище
*/

storge('keyName', function(){alert('няяяя!')})
var func = storge('keyName')
func()//няяяя!




сохраняет строки, числа, функции, массивы, булины, объекты возвращает все в соответствии с типами. юзайте на здоровье)

ИСПОЛЬЗОВАНИЕ:

storge('keyName', value) // установить ключ

storge('keyName') // получить значение

storge('keyName', null) // удалить ключ

storge(null) // очистить хранилище

var dump = storge() // получить дамп хранилища

storge(dump) //слить обьект с хранилещем с заменой ключей которые уже имеются

storge(dump, true) //слить обьект с хранилещем без замены уже существующих значений, щадящий режим включен



ПРОСТРАНСТВО ИМЕН:

storge('name', 200) //установить ключ name в 200
storge('name') //получить ключ name

storge('name.q', 40) //установить name.q в 40
storge('name.w', 30) //установить name.w в 30
//при этом name по прежнему жива и равна 200 потому что её мы не трогали

storge('name.q') //получить значение name.q, все как обычно


теперь интереснее
storge('name.') //получить массив ПОДключей name, то есть массив [name.q, name.w] НЕ включая саму name

еще интересней
storge('name.', 'ня') //установить все ПОДключи name в 'ня'

совсем интересно
storge('name.', null) //удалить все ПОДключи name, при том сама name останется нетронутой

god mode
storge('.qq', null) //удалить все ПОДключи с именем qq, родители их останутся не тронутыми

Последний раз редактировалось Livaanderiamarum, 07.01.2012 в 22:03.
Ответить с цитированием
  #2 (permalink)  
Старый 06.01.2012, 20:08
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Хотя бы флаг isLocalStorageAvailable добавь, для проверки доступности localStorage, чтобы в будущих скриптах на основе твоей функции, учитывалось отсутствие поддержки IE7
Ответить с цитированием
  #3 (permalink)  
Старый 07.01.2012, 05:33
Профессор
Посмотреть профиль Найти все сообщения от Livaanderiamarum
 
Регистрация: 25.12.2011
Сообщений: 786

версия 1.1 добавлена поддержка хранения функций
версия 1.5 добавлено пространство имен
версия 1.6 добавлена поддержка boolean
версия 1.7 если передать один аргумент {объект}, то он сливается с хранилищем перезаписывая
версия 1.8 без параметров возвращается объект дамп хранилища.
версия 1.9 добавлен щадящий режим слияния обьекта с хранилищем
версия 2.0 проверка на переполнение хранилища
версия 2.1 обфуксация и оптимизация кода

// в разработке
версия 2.2 поддержка эмуляции хранилища в старых браузерах через cookies

Последний раз редактировалось Livaanderiamarum, 07.01.2012 в 18:09.
Ответить с цитированием
  #4 (permalink)  
Старый 07.01.2012, 06:16
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

Сообщение от Livaanderiamarum
версия 2.1 обфуксация
зачем?
Ответить с цитированием
  #5 (permalink)  
Старый 07.01.2012, 14:57
Профессор
Посмотреть профиль Найти все сообщения от Livaanderiamarum
 
Регистрация: 25.12.2011
Сообщений: 786

Сообщение от Gvozd Посмотреть сообщение
зачем?
Чтобы трояна заныкать)
Ответить с цитированием
  #6 (permalink)  
Старый 07.01.2012, 18:08
Профессор
Посмотреть профиль Найти все сообщения от Livaanderiamarum
 
Регистрация: 25.12.2011
Сообщений: 786

Какие вещи еще зафигачить народ)?

Может сделать типа селекторов)?
Ответить с цитированием
  #7 (permalink)  
Старый 07.01.2012, 18:12
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

чето не допиливаю... а зачем это вообще? в чем сложность проверить наличие localStorage обычным детовским путем:
if ( window.localStorage ) {}
хуже твоего? Или так же работать с ним... Там же заумных манипуляций вроде нет. Все легко и просто сделано изначально. А насчет куки это не очсобо хороший вариант, ибо много не сохранишь, есть ограничение на количество хранения данных в куках.
Ответить с цитированием
  #8 (permalink)  
Старый 07.01.2012, 18:21
Профессор
Посмотреть профиль Найти все сообщения от Livaanderiamarum
 
Регистрация: 25.12.2011
Сообщений: 786

Сообщение от devote Посмотреть сообщение
чето не допиливаю... а зачем это вообще?
1) для удобства работы
2) для быстроты работы
3) для простоты работы

как и любая библиотека собственно

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

Последний раз редактировалось Livaanderiamarum, 07.01.2012 в 18:23.
Ответить с цитированием
  #9 (permalink)  
Старый 07.01.2012, 18:25
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

подрубать целый скрипт лишь ради того что бы всунуть что-то в storage хм... не вижу смысла... хотя может вам оно и удобнее. По мне так проще и удобнее юзать встроенные возможности в браузер, а библы нужно писать те что реально всегда нужны. Что-то типа сложных действий, которые бразуер делать сам не умеет. Но писать библу(обертку) на localStorage с которым и без библы(обертки) работать легко, не вижу смысла.
Ответить с цитированием
  #10 (permalink)  
Старый 07.01.2012, 18:41
Профессор
Посмотреть профиль Найти все сообщения от Livaanderiamarum
 
Регистрация: 25.12.2011
Сообщений: 786

засунь обьект в сторч без либы, прямо тут.
потом получи его. в консоль выведи.

потом засунь число и получи его и выведи его тип алертом.
потом засунь строку '93444' и получи её и выведи тип алертом.
посмотрим как справишься...

Последний раз редактировалось Livaanderiamarum, 07.01.2012 в 18:43.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Новая система управления сайтом Scripto CMS deepslam Ваши сайты и скрипты 38 31.01.2011 14:55
Функция для jQuery qwermjk Общие вопросы Javascript 4 25.01.2011 09:56
jQuery, функция animate(), рекурсия xintrea jQuery 12 03.01.2011 12:33
Ищу скрипт для работы с bbcode mTzen Общие вопросы Javascript 3 13.09.2010 07:17