6

phonegapでアプリケーションを作成しようとしています。私はいくつかの機能を持つcustom.jsjavascriptファイルを作成しました

function func1(){....}
function func2(){....}

これらの関数はすべて、2つの異なるhtmlページで使用されます。最初のHTMLページでは、何らかの操作を行っているfunc1の変数を使用しています。2ページ目は、func1の状態でfunc2にアクセスしたい。しかし、私はそれをすることができません。私は両方のhtmlページにcustom.jsを含めています。複数のページで使用すると、JavaScriptファイルがリセット/更新されることを読みました。func1で変数の状態を保存し、func1にあった状態でfunc2(別のHTMLページ)でその変数にアクセスする方法の例を誰かに教えてもらえますか?ビューステートについても読みました。しかし、それは私にとっても機能していません。助けてください...

4

3 に答える 3

10

値をlocalstorageに保存し、そこから参照します。

function first() {
    localStorage.setItem('myItem', "something you want to store");
}

function second() {
    myValue = null;
    if (localStorage.getItem('myItem')) {
        myValue = localStorage.getItem('myItem');
    }
}
于 2012-10-15T12:35:43.850 に答える
1

最新のブラウザでは、そのためにlocalStorageを使用できます

var get = function (key) {
  return window.localStorage ? window.localStorage[key] : null;
}

var put = function (key, value) {
  if (window.localStorage) {
    window.localStorage[key] = value;
  }
}

getとputを使用して、最新のブラウザのローカルストレージに値を保存します。

于 2012-10-15T12:34:34.497 に答える
0

より簡単で好ましい方法は、window.localStorageサイト全体の変数を格納するために使用することです。古いブラウザにも対応するために、 Cookieをセカンダリストレージの場所として使用することを検討できます。

// credits to http://mathiasbynens.be/notes/localstorage-pattern
var hasStorage = (function() {
      try {
        localStorage.setItem(mod, mod);
        localStorage.removeItem(mod);
        return true;
      } catch(e) {
        return false;
      }
    }());

function setSiteWideValue(_key, _value) {
    if(hasStorage) {
        localStorage[_key] = _value;
    }
    else {
        document.cookie = _key+'='+_value+'; expires=<date-here>; path=/; ;domain=<.yourdomain>';
    }
}

function getSiteWideValue(_key) {
    if(hasStorage) {
        return localStorage[_key];
    }
    else {
        if(document.cookie.indexOf(_key+'=') != -1) {
            return document.cookie.split(_key+'=')[1].split(';')[0];
        }
    }
}
于 2012-10-15T12:37:32.673 に答える