Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 11.06.2012, 07:53
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

localStorage для IE6-7
Привет всем, слепил тут lacalStorage для ишака 7, но и в 6-ом тоже думаю будет работать. Без какого либо использования кукисов!!!
вот тут пример: http://storage.spb-piksel.ru/
<!DOCTYPE html>
<html>
    <head>
        <meta charset=utf-8 />
        <title>:)</title>
		<script type="text/javascript" src="https://raw.github.com/devote/localstorage/master/storage.min.js"></script>

		<script type="text/javascript">
			function saveData() {
				var storageKey = document.getElementById( 'storageKey' ),
					storageValue = document.getElementById( 'storageValue' );

				if ( storageKey.value ) {
					localStorage.setItem( storageKey.value, storageValue.value );
					alert( "Data successfully stored" );
				} else {
					alert( "Please enter storage KEY item" );
				}
			}

			function loadData() {
				var storageKey = document.getElementById( 'storageKey' ),
					storageValue = document.getElementById( 'storageValue' );

				if ( storageKey.value ) {
					storageValue.value = localStorage.getItem( storageKey.value );
					alert( 'Data successfully loaded: "' + storageKey.value + ': ' + storageValue.value + '"' );
				} else {
					alert( "Please enter storage KEY item" );
				}
			}

			window.onload = function() {

				loadData();

				window.onstorage = function( e ) {

					var params = ["key","oldValue","newValue","url","storageArea"];

					var k, s = "";
					while( k = params.shift() ) {
						s += "<b>" + k + "</b>: " + e[ k ] + "<br/>";
					}
					var div = document.createElement('div');
					div.innerHTML = s;
					document.body.appendChild( div );
				}
			}
		</script>
    </head>
    <body>
		Enter KEY for store storage: <input id="storageKey" type="text" value="testKey" /><br />
		Enter Value for current KEY: <input id="storageValue" type="text" value="" /><br />
		<button onclick="saveData();">Store entered data</button>
		<button onclick="loadData();">Load from storage</button>
		<button onclick="localStorage.clear();">Clear storage</button>
    </body>
</html>
Скачать можно на GitHub: https://github.com/devote/localstorage

Последний раз редактировалось devote, 12.07.2012 в 16:08.
Ответить с цитированием
  #2 (permalink)  
Старый 11.06.2012, 12:07
Профессор
Отправить личное сообщение для beard Посмотреть профиль Найти все сообщения от beard
 
Регистрация: 08.05.2012
Сообщений: 264

стерто
Ответить с цитированием
  #3 (permalink)  
Старый 11.06.2012, 13:58
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от beard
стерто
ты о чем?
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #4 (permalink)  
Старый 11.06.2012, 14:46
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

devote,
класс - Всё работает при перезагрузки страницы - выключении компа и даж при очистке Кеша
Ответить с цитированием
  #5 (permalink)  
Старый 11.06.2012, 15:02
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

тока что обновил версию, баг нашел небольшой... исправил его.
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #6 (permalink)  
Старый 11.06.2012, 15:38
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Сообщение от devote
тока что обновил версию
Опробовал
Ответить с цитированием
  #7 (permalink)  
Старый 11.06.2012, 18:27
Профессор
Отправить личное сообщение для zebra Посмотреть профиль Найти все сообщения от zebra
 
Регистрация: 14.09.2011
Сообщений: 523

А можно объяснить где оно хранит данные?
Ответить с цитированием
  #8 (permalink)  
Старый 11.06.2012, 19:24
Профессор
Отправить личное сообщение для beard Посмотреть профиль Найти все сообщения от beard
 
Регистрация: 08.05.2012
Сообщений: 264

Сообщение от zebra
А можно объяснить где оно хранит данные?
да, опиши пожалуйста вкратце что происходит и как работает. Чтобы не разгребать. Был бы очень благодарен.
Ответить с цитированием
  #9 (permalink)  
Старый 11.06.2012, 19:50
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от zebra
А можно объяснить где оно хранит данные?
хранятся данные у пользователя в компе

Сообщение от beard
да, опиши пожалуйста вкратце что происходит и как работает. Чтобы не разгребать. Был бы очень благодарен.
Особо заумного ничего не происходит, у IE давно существует localStorage но он имеет свои недостатки, которые я попытался обойти в данной реализации.

А недостатки таковы.

У IE существуют behavior'ы которые давно работают начиная с IE5+ и в этих behavior'сах есть тот самый localStorage, но он ограничен тем что записывает и хранит данные не на домен а на текущий путь указанный в адресной строке, тоесть на текущую папку правильнее сказать. Если сохранить данные находясь по адресу http://somesite.com/ то они не будут доступны по адресу http://somesite.com/folder/ то есть в иной папке. Именно эту проблему я и попытался обойти в данной реализации.

Что бы понять подробнее как это работает, в идеале конечно почитать код и понять как, но вкратце я все же скажу что реализация использует iframe и в него загружает главную страницу сайта, блокируя выполнения скриптов, загрузку ресурсов и т.д. То-есть ваша главная страница во фрейме лежит пустая, и имеет лишь небольшую часть javascript кода, который просто сохраняет данные все время в одной и той же папке. От этого и получается нужный нам эффект.

Надеюсь понятно изложил суть.
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #10 (permalink)  
Старый 11.06.2012, 19:59
Профессор
Отправить личное сообщение для beard Посмотреть профиль Найти все сообщения от beard
 
Регистрация: 08.05.2012
Сообщений: 264

devote, да, понятно, спасибо

интересная тема выходит

как я понимаю эти behavior'ры нельзя никак очистить браузером, или обнулить. Т.е. получается хранилище оn которого пользователь не может избавится как от куков или локалсторадж?

Есть ли идеи как сделать подобное для всех остальных браузеров?
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Collection – фреймворк для управления данными kobezzza Ваши сайты и скрипты 155 10.05.2013 08:59
Удалению метаданных в JPEG lorents Библиотеки/Тулкиты/Фреймворки 2 22.04.2012 21:02
Реализация игрового поля для игры "Точки" last-art Events/DOM/Window 7 22.04.2012 03:18
Как использовать спрайты для Inline-блоков в качестве фона в IE6? Nominus umbra (X)HTML/CSS 2 11.06.2010 21:58
Переодическое обновление значений для графика, функция для обновления значений yupa87 Общие вопросы Javascript 0 09.07.2009 14:48