Nano Hash - криптовалюты, майнинг, программирование

YUI 2: Storage Utility - Почему ключи / значения не сохраняются от страницы к странице

Попытка использовать 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");

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

04.08.2010

  • Роб, не могли бы вы вставить полный блок кода создания экземпляра? 05.08.2010

Ответы:


1

Роб,

Я установил две тестовые страницы, которые в основном копируют и вставляют из вашего кода создания экземпляра:

http://ericmiraglia.com/yui/demos/storage.php

Когда я перехожу от одного к другому, я каждый раз получаю всплывающее окно успеха.

Единственное существенное различие между моим кодом и вашим - это отсутствие jQuery (примечание: это в конечном итоге не влияет на функциональность) и добавление местоположения SWF (что важно как резервный вариант для браузеров, не поддерживающих хранилище HTML5; ОБНОВЛЕНИЕ : вот что решило проблему Роба). Но я тестировал в Safari 5 и FF 3.6, так что он должен был просто использовать поддержку HTML5 напрямую.

Эти страницы работают на вас?

-Эрик

05.08.2010
  • Привет, Эрик. Дала тебе ответ! Спасибо! Итак, после того, как я зашел на ваш сайт (и это сработало), я вырезал и вставил ваш код, чтобы попробовать локально. Мне удалось включить jquery 1.4.2 и успешно использовать готовый документ jquery. Таким образом, это говорит мне, что на самом деле разница была в вашей строке пути swf. Возможно, вы можете отредактировать свой пост, чтобы отразить это, на случай, если кто-то другой делает это и ему нужно использовать WITH jquery (что на самом деле является моей ситуацией). Еще раз спасибо, и я ценю, что вы разместили код! 05.08.2010
  • Я также должен упомянуть, что обычно я не делаю двойные публикации, но сначала я разместил это на форумах yahoo, где, казалось, он принадлежал, но не получил ответа. Поставил вам отметку: yuilibrary.com/forum/ 05.08.2010
  • Роб - извини, что пропустил твой пост на YUILibrary.com - мне плохо. Рад, что это сработало. 06.08.2010
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..