0

YUI 2ストレージユーティリティを使用して、(同じページで)機能した例に従いました。しかし、2番目のページ(たとえばpage2.html)を作成してキーにアクセスしようとすると、値がnullになります。

したがって、1ページ目で私は次のように呼びます。

localStorageEngine.setItem('testText', 'this is a triumph (local storage engine)');

同じページでgetItemを使用すると表示されますが、page2.htmlと言うと次のようになります。

alert(localStorageEngine.getItem('testText'));

nullに戻ります。これがポイントだと思いました。以下は、jquery1.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;
  試す {
    localStorageEngine = YAHOO.util.StorageManager.get(
        YAHOO.util.StorageEngineHTML5.ENGINE_NAME、
        YAHOO.util.StorageManager.LOCATION_LOCAL、
        {{   
            力:false、
            注文: [
                YAHOO.util.StorageEngineHTML5、
                YAHOO.util.StorageEngineSWF、
                YAHOO.util.StorageEngineGears
            ]
        }
     );
  } catch(e){
    YAHOO.log( "サポートされているストレージメカニズムはありません。");
    localStorageEngine = false;
  }
  if(localStorageEngine){
    localStorageEngine.subscribe(localStorageEngine.CE_READY、function(){
        localStorageEngine.setItem('testText'、'これは勝利です(ローカルストレージエンジン)');
        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行であることがわかりました(yahooの同じものの代わりにjqueryドキュメントの準備ができていません)。これは、他の点ではほとんど同じである関連コードです。


//YAHOO.util.Event.onDOMReady(function() {  
jQuery(document).ready(function(){
  YAHOO.util.StorageEngineSWF.SWFURL ='assets / swfstore2-8-1.swf';

編集2 面倒な編集についてお詫びしますが、実装する必要があるのでこの投稿に戻り、Ericの例の2ページ目(彼はそれを削除することを選択するかもしれませんが)がまだ値を設定していることに気付きました。これは、ページ間で値を保持することを実際に例示するものではありません。そこで、これをgetの前の2ページ目に追加し、getItemでアラートを実行すると、nullに戻りました。

/ *
        localStorageEngine.setItem('testText'、'これは勝利です(ローカルストレージエンジン)');
        localStorageEngine.setItem('testNumber'、1234567890);
        localStorageEngine.setItem('testBoolean'、true);
* /

基本的に2ページのセットコードをコメントアウトします。基盤となるDOMStorageオブジェクトについて詳しく読んだ後、特定のドメインに関連付けられていることがわかりました。たとえば、私がそうする場合:

sessionStorage.setItem( "name"、 "Rob");

ローカルマシンでは許可されていない操作が実行されますが、サーバーにアップロードすると機能します。ストレージユーティリティの例でも同じことを行い、それも機能しました。したがって、要点はサーバーに配置されます。

4

1 に答える 1

1

ロブ、

基本的にインスタンス化コードからコピーアンドペーストする2つのテストページを設定しました。

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

ある場所から別の場所に移動すると、毎回成功ポップアップが表示されます。

私のコードとあなたのコードの唯一の重要な違いは、jQueryの省略(注:これは最終的に機能に影響を与えません)とSWFの場所の追加(HTML5ストレージをサポートしないブラウザーのフォールバックとして重要です; UPDATE)です。 :これがRobが抱えていた問題を解決したものです)。しかし、私はSafari5とFF3.6でテストしたので、HTML5サポートを直接使用しているはずです。

それらのページはあなたのために働きますか?

-エリック

于 2010-08-05T03:20:13.820 に答える