Попытка использовать YUI 2 Storage Utility и следовать примеру, который работал (на той же странице); но когда я создаю вторую страницу (скажем, page2.html) и пытаюсь получить доступ к ключу, я возвращаю значение null для значения.
Итак, на первой странице я звоню:
localStorageEngine.setItem('testText', 'this is a triumph (local storage engine)');
и если я использую getItem на той же странице, я вижу это, но если я использую, скажем, page2.html:
alert(localStorageEngine.getItem('testText'));
Я возвращаюсь нулевым. Я думал, что в этом суть. В дополнение к jquery 1.4.2 я добавил следующее.
src="http://yui.yahooapis.com/combo?2.8.1/build/yahoo-dom-event/yahoo-dom-event.js&2.8.1/build/cookie/cookie-min.js&2.8.1/build/element/element-min.js&2.8.1/build/swf/swf-min.js&2.8.1/build/swfstore/swfstore-min.js&2.8.1/build/storage/storage-min.js"
Вот основная часть моего кода javascript:
//YAHOO.util.Event.onDOMReady(function() { jQuery(document).ready(function() { var localStorageEngine; try { localStorageEngine = YAHOO.util.StorageManager.get( YAHOO.util.StorageEngineHTML5.ENGINE_NAME, YAHOO.util.StorageManager.LOCATION_LOCAL, { force: false, order: [ YAHOO.util.StorageEngineHTML5, YAHOO.util.StorageEngineSWF, YAHOO.util.StorageEngineGears ] } ); } catch(e) { YAHOO.log("No supported storage mechanism present."); localStorageEngine = false; } if(localStorageEngine) { localStorageEngine.subscribe(localStorageEngine.CE_READY, function() { localStorageEngine.setItem('testText', 'this is a triumph (local storage engine)'); localStorageEngine.setItem('testNumber', 1234567890); localStorageEngine.setItem('testBoolean', true); alert(localStorageEngine.getItem('testText')); console.log("len: ", localStorageEngine.length); console.log("has key: ", localStorageEngine.hasKey("testText")); }); } });
РЕДАКТИРОВАТЬ:
Ответ Эрика (очень полезный!) Сработал, но в моем случае оказалось, что это была именно строка swf (без использования готового документа jquery вместо того же yahoo). Вот соответствующий код, который в остальном почти такой же:
//YAHOO.util.Event.onDOMReady(function() { jQuery(document).ready(function() { YAHOO.util.StorageEngineSWF.SWFURL = 'assets/swfstore2-8-1.swf';
ИЗМЕНИТЬ 2. Приношу свои извинения за грязные правки, но я вернулся к этому сообщению, так как теперь мне нужно реализовать и понял, что вторая страница в примере Эрика (хотя он может решить ее удалить) все еще установка значения перед получением, чтобы оно не являлось примером сохранения значения между страницами. Итак, я добавил это на вторую страницу перед получением, и он вернулся к нулевому значению, когда я сделал предупреждение для getItem:
/* localStorageEngine.setItem('testText', 'this is a triumph (local storage engine)'); localStorageEngine.setItem('testNumber', 1234567890); localStorageEngine.setItem('testBoolean', true); */
по существу комментируя установленный код на странице 2. Прочитав больше о базовом объекте хранилища DOM, я вижу, что он привязан к определенному домену. Например, если я это сделаю:
sessionStorage.setItem("name", "Rob");
на моем локальном компьютере я получаю недопустимую операцию, но если я загружаю ее на сервер, она работает. То же самое проделал с примерами утилит хранения, и это тоже сработало. Итак, суть заключается в том, чтобы разместить это на сервере.