2011-01-13 1 views
1

Это мой первый опыт работы с localStorage, и я пытаюсь сохранить объект json, который я строю (ing).html5 локальное хранилище возвращает значения только на домашней странице, а не на других страницах

На моей домашней странице, я использую следующий код

 
localStorage.setItem("users",JSON.stringify(userList)); 

alert(localStorage.getItem("users")); 

location.href="test2.html"; 

Это предупреждение выплевывает список пользователей не проблема.

Тогда на test2.html, у меня есть

 
var userList=JSON.parse(localStorage.getItem("users")); 
    alert(userList.toSource()); 

Firebug выплевывает 'список пользователей является нулевой' ошибкой.

Я попытался использовать строку 'test' вместо стробируемого объекта json, но не повезло. Я также попытался удалить JSON.parse и просто вернуть строку. Это тоже не сработало.

Что я делаю неправильно?

+2

Между домашней страницей и другими страницами это доменное имя такое же? Как насчет «http» против «https»? – Pointy

+0

Да, это все работает локально под c: \, и в той же папке, если это имеет значение. Но я попробую запустить его с localhost и посмотреть, не изменилось ли это. – pedalpete

+1

Хм ... ну, я знаю, что Chrome действительно придирчив к тому, все ли локальные HTML-файлы находятся в одном домене. Возможно, Firefox тоже придирчив. Можете ли вы поместить страницы на какой-нибудь сервер где-нибудь и посмотреть, не изменилось ли это? – Pointy

ответ

4

Современные браузеры решили, что локальные файлы (например, «file: //») - это , а не, которые считаются членами общего «домена», по крайней мере для некоторых целей. Chrome, кажется, самый строгий, но, возможно, в HTML5-функциях Firefox также является строгим.

Это своего рода смысл: если кто-то изобретает какой-то инструмент TiddlyWiki, который использует хранилище HTML5, вы не хотите, чтобы его материалы были доступны для какого-либо случайного другого файла HTML, который вы загружаете по совершенно несвязанным причинам.

Смежные вопросы